为了考好 发表于 2021-7-14 08:45:58

关于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:45

跟编译器有关 没什么意义

为了考好 发表于 2021-7-14 20:45:14

万千只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:49:44

为了考好 发表于 2021-7-14 20:45
?要是最初版的VC ++ 6.0是22,然后vs_community__1741591633.1585401897的运行结果是24,我感觉应该是24 ...

这样的代码不符合标准,具体结果由编译器决定,不同的编译器结果很有可能不一样

人造人 发表于 2021-7-14 20:53:12

q = (++j) + (++j) + (++j);
这不有 3 个 ++j 么
那就 j + 3 = 8
然后 8 + 8 + 8 = 24
你能说这样算 不对吗?

为了考好 发表于 2021-7-14 20:53:16

人造人 发表于 2021-7-14 20:49
这样的代码不符合标准,具体结果由编译器决定,不同的编译器结果很有可能不一样

小甲鱼老师的,以前的C语言的例子让我们打的,况且这个也不报错,额

人造人 发表于 2021-7-14 20:54:09

为了考好 发表于 2021-7-14 20:53
小甲鱼老师的,以前的C语言的例子让我们打的,况且这个也不报错,额

对呀,这样的代码没有语法错误
只是标准对此没有定义而已

万千只cnm 发表于 2021-7-14 21:18:54

不要过多纠结啦
只要理解自增自减就行了
这样写难以阅读而且没什么意思

为了考好 发表于 2021-7-14 21:31:15

万千只cnm 发表于 2021-7-14 21:18
不要过多纠结啦
只要理解自增自减就行了
这样写难以阅读而且没什么意思

啊这,我主要是为了考试,,我怕那个考试考这个,专升本的考试

人造人 发表于 2021-7-14 21:44:44

为了考好 发表于 2021-7-14 21:31
啊这,我主要是为了考试,,我怕那个考试考这个,专升本的考试

摸清楚考试要用的编译器,摸清楚编译器的计算规则,不然就只能碰运气

万户侯 发表于 2021-7-14 21:46:50

不同编译器结果还不同,不用搞懂

为了考好 发表于 2021-7-14 21:47:30

人造人 发表于 2021-7-14 20:53
q = (++j) + (++j) + (++j);
这不有 3 个 ++j 么
那就 j + 3 = 8


是6810,我不知道为啥是这样。。我以前也想的是3个8

为了考好 发表于 2021-7-14 21:52:49

万户侯 发表于 2021-7-14 21:46
不同编译器结果还不同,不用搞懂

我就是想弄懂它的过程,对了老哥,考试会考这个吗,我怕考所以我才弄的这个
还有,碰到新人总是莫名的感觉{:9_228:}

人造人 发表于 2021-7-14 22:14:19

为了考好 发表于 2021-7-14 21:47
是6810,我不知道为啥是这样。。我以前也想的是3个8

q = (++j) + (++j) + (++j);
有可能是这样算的
先 j + 3 = 8
然后 8 + 8 + 8 = 24
页: [1]
查看完整版本: 关于C语言的一段简单程序的问题