在C语言赋值语句中,给多个变量赋值,用逗号隔开,岂不是相当于一个逗号表达式?

问题描述:

在C语言赋值语句中,给多个变量赋值,用逗号隔开,岂不是相当于一个逗号表达式?
例如.int a=1,b=2;逗号表达式的形式是:表达式1,表达式2.这么说来,上面的那个赋值语句不是相当于一个逗号表达式了?逗号表达式不是求第二个的值么?那这个赋值语句怎么说?
1个回答 分类:综合 2014-10-28

问题解答:

我来补答
不能那样理解.逗号表达式是已经声明过的变量合法组成的多个有效运算表达式用逗号隔开,而int a=1,b=2;只能有一种解释,那就是声明和初始化变量时可以把多个相同类型的变量用逗号隔开写在同一个类型符后面,最后用分号结束.对上面的声明,如果再声明一个int c;,那么,c=(a=1,b=2)运算后c=2,因为(a=1,b=2)取最右边一个逗号后表达式的运算结果.所以,我觉得c=(a=1,b=2)中的(a=1,b=2)是逗号表达式,而int a=1,b=2不是逗号表达式!计算机语言的所谓“语法”其实只是一些书写规定,有很多甚至是不能变通的,比如char *p,*q,语法说*是属于char而不属于后面的变量的,但若写成char *p,q后q却不认为是指针,这又怎么理解呢?那就是为了方便,不然,如
char *p,w,x;这样的声明就要写成两行了:
char *p;
char w,x;
……
 
 
展开全文阅读
剩余:2000