关于C语言的一段简单程序的问题
#include <stdio.h>void main()
{
int i = 5, j = 5, p, q;
p = (i++) + (i++) + (i++);
q = (++j) + (++j) + (++j);
printf("%d,%d,%d,%d",p, q, i, j);
}
为什么第一个i的值是15,q的值是24? 跟编译器有关 没什么意义 万千只cnm 发表于 2021-7-14 19:12
跟编译器有关 没什么意义
?要是最初版的VC ++ 6.0是22,然后vs_community__1741591633.1585401897的运行结果是24,我感觉应该是24,一个一个试的,i的值分别是68 10 ,然后组成了24,就是不明白为啥是6 8 10
为了考好 发表于 2021-7-14 20:45
?要是最初版的VC ++ 6.0是22,然后vs_community__1741591633.1585401897的运行结果是24,我感觉应该是24 ...
这样的代码不符合标准,具体结果由编译器决定,不同的编译器结果很有可能不一样
q = (++j) + (++j) + (++j);
这不有 3 个 ++j 么
那就 j + 3 = 8
然后 8 + 8 + 8 = 24
你能说这样算 不对吗?
人造人 发表于 2021-7-14 20:49
这样的代码不符合标准,具体结果由编译器决定,不同的编译器结果很有可能不一样
小甲鱼老师的,以前的C语言的例子让我们打的,况且这个也不报错,额 为了考好 发表于 2021-7-14 20:53
小甲鱼老师的,以前的C语言的例子让我们打的,况且这个也不报错,额
对呀,这样的代码没有语法错误
只是标准对此没有定义而已
不要过多纠结啦
只要理解自增自减就行了
这样写难以阅读而且没什么意思
万千只cnm 发表于 2021-7-14 21:18
不要过多纠结啦
只要理解自增自减就行了
这样写难以阅读而且没什么意思
啊这,我主要是为了考试,,我怕那个考试考这个,专升本的考试 为了考好 发表于 2021-7-14 21:31
啊这,我主要是为了考试,,我怕那个考试考这个,专升本的考试
摸清楚考试要用的编译器,摸清楚编译器的计算规则,不然就只能碰运气
不同编译器结果还不同,不用搞懂 人造人 发表于 2021-7-14 20:53
q = (++j) + (++j) + (++j);
这不有 3 个 ++j 么
那就 j + 3 = 8
是6810,我不知道为啥是这样。。我以前也想的是3个8 万户侯 发表于 2021-7-14 21:46
不同编译器结果还不同,不用搞懂
我就是想弄懂它的过程,对了老哥,考试会考这个吗,我怕考所以我才弄的这个
还有,碰到新人总是莫名的感觉{:9_228:} 为了考好 发表于 2021-7-14 21:47
是6810,我不知道为啥是这样。。我以前也想的是3个8
q = (++j) + (++j) + (++j);
有可能是这样算的
先 j + 3 = 8
然后 8 + 8 + 8 = 24
页:
[1]