C语言逗号表达式的疑问
如果是((x=a+b),(b+c))实际上可以看成(6,10)整个逗号表达式的值应该是10
但这是错的,这儿还有赋值运算符。赋值运算符的优先级是14,而逗号表达式的优先级是15,也就是说上面的表达式中 y=(x=a+b),(b+c);应该等价于这样的结合:y=x,10;如果这样写的话,则答案很清晰,为:6
提示:据我统计,这种类型的题目错误率超过70%.
有疑问请HI我:)
printf("逗号表达式的值为:%d
",(a=2*5,a*4,a+3));将对应语句修改成上面的,就是13了。
理由就是逗号运算的优先级很低,应该要加括号,表示先计算逗号表达式的值为13,然后再打印输出。
原文中的语句是先打印,所以是10;
自己试试~~~~~
i++以后,i=3
j=(3,6,2)=2
相信你自己的判断,书是错的。你可以自己试试。
我认为教材应该采用一些更实用的例子,解释逗号操作符到底用在什么地方能简化代码,提高效率。语言是用来沟通和解决问题的,而不是用来卖弄的,试问有人会在应用中写这样的代码么?
建议多实践,多解决实际问题,不要被落后的教育理念束缚手脚。
这个问题有意思……
首先i++是用了之后增加,“日后再说”,但是在i++结束之后i已经加一了,变成了3;
然后i+3,中间的那个表达式变成6;
最后的i-1,变成2(因为此时i是3),最后把2赋给j。
我用如下代码段检验过:
#include <stdio.h>
int main(){
int i=2,j=5;
j=(i++,i+3,i-1);
printf("%d %d.\n", i, j);
return 0;
}
borland C V5.5编译通过,结果为:3 2.
所以你说的几乎全都不对……我看最有可能是你写错了例子。
在C语言中,“?”。“:”是什么意思?
1、意思:是条件运算符,条件运算符是C语言中唯一的三目运算符,就是说他有三个运算对象。2、条件运算符的形式是“?:”由他构成的表达式称为条件表达式。形式为:表达式1?表达式2:表达式3。运算符 表达式为:表达式1?表达式2:表达式3 先求解表达式1 若其值为真(非0)则将表达式2的值作为整个...
c语言中什么和什么怎么表示
在C语言中,"“”"用于表示疑问、假如或如果的条件。例如,表达式(a>b)y:n表明,如果变量a大于b,程序将执行y部分,否则执行n部分。这实质上是一种条件语句的简化写法。":"在C语言中用于判断结果的选择。例如,(a>b)y:n中,当a大于b时,执行y,否则执行n。这种结构在switch-case语句中很常见...
c语言中?是什么意思
?在语言中表示疑问,那么疑问来自于判断。:在语言中表示判断的结果选择。所以编程逻辑就是先进行判断,然后再进行选择。例如,当a>b时,x=1否则x=0,可以写成x=a>b?1:0。
C语言,赋值表达式
例3 A.表达式中出现逗号,如果是逗号表达式,需要用小括号将整个表达式括起来,这里没有,所以这个逗号将在编译时报语法错误,错误的原因是用逗号而不是分号分隔语句 B.赋值号左边必须是一个变量,这里写成了一个表达式错误 C.连等的情况与B差不多一种错误,要求赋值号左边不能是表达式,比如可以写x=...
刚学C语言,有两个表达式要请教大家
=== a=5+c+d=a+5 首先只有左值表达式 才能赋值 其次由于优先级的原因,先执行左边的等号。可以改为 a=5+c+(d=a+5)这样就是你说的情况了。是正确的。逗号表达式是在两个括号里的 === 左值表达式的概念你可以看看书,一般变量都是左值表达式,还有好像i++和++i也是;就是说可以放在等号左边...
c语言中 x++,x+y,y+=x,z=x+y
c语言中:int x=2,y=3,z z=(x++,x+y,y+=x,x+y) 答案是9 没错.(x++,x+y,y+=x,x+y)这是一个逗号表达式,它的值是最后一项的值 即(x+y)的值.首先x++ x变成了3,接着x+y 对结果没有影响x和y都没有变化 结果3+3=6,接着y+=x y变成了6(x=3,y=3 3+3=6...
设int x=1, y=1; 表达式(!x||y--)的值是 要说明方法
根据运算符优先级和结合性可知,原式等效于 ((!x)||(y--))对于子表达式代入xy值可知 !x值为0(假)y--,由于是自减运算符后缀,所以表达式值为y的原值1(真)所以整个表达式值为1(真)例如:逻辑运算的表达式,非0即1。!x的结果是0 y--的结果是1 0跟1逻辑或的结果是1 ...
逗号怎么用
句中三个带疑问代词“何”...>> 问题五:C语言中逗号运算符怎么用? 2楼说的很详细了 ,逗号运算符的作用是将若干表达式连接起来。它的优先级别在所有运算符中是最低的,结合方向是自左至右的。其值是最后一个表达式的,其间所有的都要计算,你所说的 a=12+(s+2,d+4); 先算s+2.的4,然后算d+4,最后...
c语言中,a ‘a’ ."a".有什么区别
1、本质区别 双引号里面的是字符串, 而单引号里面的代表字符。2、输出区别 str = “a”输出的就是a这个字母;str = ‘a’输出的测试65 3、底层区别 用单引号引起的一个字符实际上代表一个整数,整数值对应于该字符在编译器采用的字符集中的序列值。
C++运行问题
首先你得了解逗号运算符.:c++提供一种特殊的运算符,逗号运算符,优先级别最低.他优先级别最低.一定要记住他优先级是最低的哦.至于前面 cout<<(a=b); 这个输出3毫无疑问.后面cout<<a,b,c;我们就来分析下:因为逗号运算符优先级最低,所以cout<<a,b,c;这个被拆分成:(cout<<a),b,c;也就是...