c语言,逗号表达式要带括号吗?为什么书上的逗号表达式都带括号?
括号内加逗号的表达式属于逗号表达式,逗号表达式的规则是从左往右依次执行语句,并返回最后一个语句的结果,如果计算到最后最后慧闹差一个表达式的值为真,则整个逗号表达弯裤式为真,否前皮则为假。
C语言里的逗号的使用方法
C语言提供一态腔种特殊放入运算符—-逗号运算符
表达式1,表达式2
逗号表达式的汪隐求解过程是困闭厅:先求表达式1,再求表达式2.整个逗号表达式的值是表达式2的值,如表达式“3+5,6+8”的值为14。又如,逗号表达式:“a=3*5,a*4”,赋值运算符的优先级别高于逗号运算符,因此应先求解a=3*5.经计算和赋值后得到a的值为15,然后求解a*4,得60.整个逗号表达式的值为60.
逗号表达式的一般形式可以扩展为
表达式1,表达式2,表达式3,。。。表达式n。它的值为表达式n的值
逗号运算符是所有运算符中级别最低的。
在C语言中逗号运算符有什么用呢?
等下。。答错了。。还需要理解一下神马是逗号表达式。。我前面说的和uuyyhhjj与delta_charlie的意思一样,但其实我们都搞错了。你可以自己把我们的例子都运行一下,看看是不是这样。下面我感觉应该是我正确的理解。
逗号表达式是所有运算符中优先级最低的,比赋值运算符还要低。他的作用就是把每个表达式都算一遍,并且把最后一个表达式返回的值作为逗号表达式的值。(把其他的都不管了)
像你说的那个,如果是
x=200,500;
(没有括号),x就会等于200,然后上面整个式子的值是500。
但是有括号的话, (200,500) 就是谨凯带一个单独的式子,他的值是500,所以x=(200,500)最后赋值给x就是500
举几个例子,
x=(21,22,23,24,25);
这个里面,先算括号里的,前面的21到24算过后都被丢弃,括号里的表达式的值是25。之后执行赋值运算,x的值就变成括号里表达式的值,25了。
如果编译
int x;
int a;
x=(21,22,23,24,25);
cout”x=”xendl;
会输出
x=25
x=21,22,23,24,25;
这行整个是一个表达式。
逗号运算符会分别计算表达式x=21、22、23 、24、25(单独一个数字也可以叫做表达式)。
然后他会用最后一个表达式作为逗号表达式的值。所以整个式子(整个一行)的值是25。但是因为这个值并没有返回给别的变量,他就也被丢弃了。
如果编译
int x;
x=21,22,23,24,25;
coutx;
输出是21。
a=(x=21,22,23,24,25);
这个里面,除了给x赋值,它又把逗号表达式的值25赋给a。
如果编译
int x;
int a;
a=(x=21,22,23,24,25);
cout”x=”xendl;
cout”a=”aendl;
会输出
x=21
a=25
a=(x=21,22,23,24,x*25);这个里,赋值给x之后又利用x计算了逗号表达式的值,21*25,最后把这个值赋给a
如果编译
int x;
int a;
a=(x=21,22,23,24,x*25);
cout”x=”xendl;
cout”a=”aendl;
会输出
x=21
a=525
简单来说,逗号的作用就是执行每一个表达式,然后用最后一个表达式作为他它的值。
看这个孙绝可能可以帮助你理解
如祥芦有疑问,欢迎您的追问。