吾爱程序员:这里有好玩的游戏和软件
当前位置:首页C语言教程 → 在 C 中使用 ++ 运算符执行 printf

在 C 中使用 ++ 运算符执行 printf

来源:网络 | 更新时间:2022-01-10 21:00:48
考虑 C 语言中的以下语句并预测其输出。
printf("%d %d %d", i, ++i, i++);
此语句通过引用参数列表中的“i”和“i++”来调用未定义的行为。它没有定义评估参数的顺序。不同的编译器可能会选择不同的顺序。单个编译器也可以在不同的时间选择不同的顺序。 例如,下面三个 printf() 语句也可能导致未定义的行为:
// C Program to demonstrate the three printf() statements
// that cause undefined behavior
#include <stdio.h>

// Driver Code
int main()
{
volatile int a = 10;
printf("%d %dn", a, a++);

a = 10;
printf("%d %dn", a++, a);

a = 10;
printf("%d %d %dn", a, a++, ++a);
return 0;
}
输出
11 10
10 10
12 11 11
说明:通常, 编译器从右到左读取 printf() 的参数。因此,'a++' 将首先执行,因为它是第一个 printf() 语句的最后一个参数。它将打印 10。虽然,现在值已经增加了 1,所以倒数第二个参数,即,将打印 11。同样,其他语句也将被执行。 注意:pre-increment++a 中,它会在打印前将值增加 1,在post-incrementa++ 中,它首先打印值,然后将值增加 1。 因此,不建议在同一个语句中不要做两个或两个以上的前置或后置自增运算符。这意味着在这个过程中绝对没有时间顺序。参数可以以任何顺序进行评估,并且它们的评估过程可以以任何方式交织在一起。  

最新文章

热点资讯

手游排行榜

CopyRight 2020-2030吾爱程序员

鄂ICP备2021004581号-8

本站资源收集于网络,如有侵权请联系我们:35492删除0109@qq.com