C语言初学者的小困惑

2024年12月03日 01:45
有6个网友回答
网友(1):

朋友这个问题很有难度的,首先可以给你说无论你找C方面的资料看,都可以看到++和--是有副作用的,所以程序中尽量少用
你这道题,如果在VC上的话,应该是
i = 6 k = 16 = 5 + 5 + 6
turbC中,应该是
i = 6 k = 18 = 6 + 6 + 6
绝对是正解,所以这个问题是与编译器有关的,你知道就好啦,不要深究

网友(2):

楼主你好!!

怎么会一样的!!前者是先自加即++i;然后早使用其值,而i++是先是用其现在的值即i=3;然后在自加!!!!

网友(3):

运算完才相加的

网友(4):

这种情况在标准里属于未定义的情况,依赖编译器的具体实现,属于语言里灰暗的角落。具体可以看看标准的sequence point部分。

网友(5):

对于++i先自增,再参与其他运算。
对于i++,先参与其他运算在自增。
所以:
j=(++i)+(++i)+(++i);
相当于:
++i;
++i;
++i;
j = i + i + i;
在可靠的编程中最好是将i++和++i独立开来。
另外++i比i++运算速度快。

网友(6):

这是编译器的问题
它进行了优化
你换一个
可能得到的答案又不同了

这里编译器先算出i的值
然后i*3