- 主题:这个printf输出值是多少
我做过语法解释器。按照课本里的说法,应该先执行--a。我的语法解释器也是这么实现的。
--
FROM 49.5.194.*
--a,++a会被提前到printf这句之前实现
--
FROM 49.5.194.*
艹,刚才实验了一下,结果是8 , 10, 8
--
FROM 49.5.194.*
[cc@aa c]$ cat main.c
#include <stdio.h>
int main(void) {
int a = 10;
printf("%d, %d, %d\n", --a, a--, a);
return 0;
}
[cc@aa c]$ ./a.out
8, 10, 8
[cc@aa c]$
--
FROM 49.5.194.*
实验结果打脸了
--
FROM 49.5.194.*
这是UB。也就是如果你要这么用,那么对不起,规范对此不做任何规定(谁先谁后),编译器爱咋实现就咋实现,所以不同编译器的实现可能不同,甚至同一个编译器的不同版本的实现都可能不同。
【 在 pfan117 的大作中提到: 】
: 实验结果打脸了
--
FROM 123.118.191.*
课本有问题
【 在 pfan117 的大作中提到: 】
: 我做过语法解释器。按照课本里的说法,应该先执行--a。我的语法解释器也是这么实现的。
--
FROM 222.94.253.*
硬核main没有形参的
【 在 freynew123 的大作中提到: 】
: 吃饱了撑的,才会去考虑这种问题
: 更应该考虑的是main为啥没有形参,没有返回值
--
FROM 91.39.67.*
998?
【 在 pickun 的大作中提到: 】
: #include <stdio.h>
: int main ()
: {
: ...................
--
FROM 210.30.193.*
这是a-- --a a这么个顺序?
【 在 pfan117 的大作中提到: 】
: 艹,刚才实验了一下,结果是8 , 10, 8
--
FROM 210.30.193.*