【问题标题】:Why is the output 0 when using equality inside printf? [duplicate]为什么在 printf 中使用相等时输出为 0? [复制]
【发布时间】:2016-03-22 22:20:29
【问题描述】:
#include<stdio.h>
int main()
{
    int var = 10 ; 
    printf ( "\n%d %d",var==10, var = 100) ;
}

输出:

0 100

在 printf 语句中,var==10 的计算结果为 true,但我得到的输出为 0。为什么会这样?

【问题讨论】:

标签: c


【解决方案1】:

您正在函数调用内部修改var。可以按任何顺序评估函数的参数。在这个特定的示例中,var = 100var==10 之前被评估,但如果您使用不同的编译器,则无法保证行为会相同。

因为您尝试读取和修改同一表达式中的变量而没有序列点来分隔它们,所以您调用的是undefined behavior

【讨论】:

    猜你喜欢
    • 2021-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-10
    • 2020-03-10
    • 1970-01-01
    • 2016-07-06
    相关资源
    最近更新 更多