首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > VSTS >

关于if语句引出的有关问题(C++ VS javascript)

2013-03-27 
关于if语句引出的问题(C++ VS javascript)最近转为学习c,进行了一些c的项目开发,熟悉了js语言特性的我,一

关于if语句引出的问题(C++ VS javascript)

     最近转为学习c++,进行了一些c++的项目开发,熟悉了js语言特性的我,一时间编程遇到很大困难,其中很困惑的就是条件判断的问题,这里以c++、js进行比较说明。首先看几个测试。

    测试一、c++源码:

int test(){printf("test\n");return 1;}int main(){int i=0;    if(i&test())    printf("ok1");    else    printf("ok2");}

运行结果:

testok2

    测试二、js源码:

function test(){  console.log("test");  return 1;}var i=0;if(i&&test())  console.log("ok1"); else console.log("ok2");

运行结果:

ok2

     从原理上说,虽然i=0对于if条件来说,不管test函数返回的结果如何,与运算后都为0(假),结果应该是"ok2”,而两种语言在这上面的运行机制完全不一样,显然c++做了很多无用功。下面再看看或运算如何。

测试三、c++源码:

int test(){printf("test\n");return 0;}int main(){int i=1;    if(i||test())    printf("ok1");    else    printf("ok2");}

运行结果:

ok1

测试四、js源码:

function test(){  console.log("test");  return 0;}var i=1;if(i||test())  console.log("ok1"); else console.log("ok2");

运行结果:

ok1

    在或运算上,c++和js语言判断机制相同,当第一个条件为真时,不再判断并列条件test函数的结果。

    个人是比较困惑,于是再对c#进行测试。

     测试五、c#源码:

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace WindowsFormsApplication1{    public partial class Form1 : Form    {        public Form1()        {            InitializeComponent();        }        string con = "";        bool test()        {            con += "test";            return true;        }        private void button1_Click(object sender, EventArgs e)        {            con = "";            bool i = false;            if (i&&test())                con += "ok1";            else                con += "ok2";            MessageBox.Show(con);        }    }}

运行结果:

关于if语句引出的有关问题(C++ VS javascript)

    说明c#与js机制相同。

    至于为什么要这样比较,是因为假如有两个条件A、B,A和B都成立时做一件事,其中A不成立B就一定不成立,那么用js,语句就可以这样写:

if(A&&B){}else{}

    当A不成立时,自然不再判断B,这样运行效率没有影响,但如果用c++来写,两个条件都会判断,效率就有影响了,所以得这样写:

if(A){    if(B){       }}else{}

    这里记下开发中遇到的困惑,至于这两种语言的深层次问题笔者也说不清楚,做个总结先。

作者:kunoy出处:http://blog.csdn.net/kunoy申明:作者写博是为了总结经验,和交流学习之用。
如需转载,请尽量保留此申明,并在文章页面明显位置给出原文连接。谢谢!






 

热点排行