永发信息网

C语言(x++)+(++x)+(x++)?

答案:5  悬赏:0  手机版
解决时间 2021-03-02 06:40
  • 提问者网友:浮克旳回音
  • 2021-03-02 01:19
C语言(x++)+(++x)+(x++)?
最佳答案
  • 五星知识达人网友:举杯邀酒敬孤独
  • 2021-03-02 01:42
LZ和Computer 举例经过测试其结果没有错。
根据其运算结果推测:
一元运算符参与赋值运算 ++i 与 i++是有区别的。前者先运算后赋值,后者直接赋值
举例: int i = 2 , l = 2 ; int x = ++i ; int y = l++ printf("x:d% y:%d",x,y) ;
在 int y=(++x)+(++x)+(x++) 中 (x = 3)
a:执计算Y的值时x执行了这样的过程: x = x + 1 x = x + 1 x = x y = 15
b:在计算X的值时X执行的过程是: x = x +1 x = x+1 x = x + 1 x = 6

y=(++x)+(++x)+(++x) ; (x = 3)
a:执计算Y的值时x执行了这样的过程: x = x + 1 x = x + 1 x = x + 1 y = 18
b:在计算X的值时X执行的过程是: x = x +1 x = x+1 x = x + 1 x = 6
全部回答
  • 1楼网友:妄饮晩冬酒
  • 2021-03-02 05:02
应该是3+5+5吧,最后x=6,你的这个是不是有错误?
  • 2楼网友:千杯敬自由
  • 2021-03-02 04:09
这个东西,历来没有定论,拜托不要再研究这样的问题了,C的标准上很明确地说明了,同一表达式中何时增加x,这个是未定义行为,各个编译器的实现不同,结果也不同,讨论这些问题是没有意义的。
  • 3楼网友:玩家
  • 2021-03-02 02:43
++ 和--运算的副作用,与编译系统的优化有关,结果不确定性。实际应用中不要写出这样的语句。
看看:
int x=3;
int y=(++x)+(++x)+(x++);
这时:x=6,y=15
再看
int x=3;
int y=(++x)+(++x)+(++x);
这时:x=6,y=18
  • 4楼网友:我住北渡口
  • 2021-03-02 01:49
x++是X=X+1 并且先带X运算以后再加的 ++X则反过来
所以 X的变化是 3 -> 4 -> 5->6(自加了三次)
进入运算求Y的过程中 首先带入的是3+(++x)+(x++) 带完X自加
然后是3+5+(x++) 第2个括号是前一个X(自加后为4)再自加得到5
最后一个X++在算Y的时候是先带X++(此时的X是4再自己加一以后是5,此自加是第2个括号)
所以最后y=3+5+5=13 而X则还要在第三个括号步骤里自加 得6
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯