【发布时间】:2015-06-09 14:12:07
【问题描述】:
我是 C 的初学者。 当我尝试运行以下代码时:
#include <stdio.h>
int main(void) {
int a = 3, b;
b = printf("%d %d", a, a++);
a = printf(" %d", b);
printf(" %d", a);
return 0;
}
它告诉我:
error: operation on 'a' may be undefined [-Werror=sequence-point]
b = printf("%d %d", a, a++);
^
但在这里我只更改了一次 a 的值。那为什么会出现序列点错误呢?
我正在使用 -Wall -Werror 标志。
【问题讨论】:
-
类似问题计数===整数溢出!这个问题已经被问过很多次了!我认为你会更快地进行快速谷歌搜索而不是问题
-
@Rizier123 我做了,但我只有 printf("%d %d %d", a++, ++a, a) 类型的问题:/
-
也一样!还有那些音调!
-
@Rizier123 但在这里我只更改了一次变量。这就是为什么我无法得到它。
-
但是你使用了变量两次,在一种情况下你增加了它!但你不知道哪个先被评估!
标签: c sequence-points