gpt4 book ai didi

c - ? : unexpected behaviour - although condition is true, ?部分未执行

转载 作者:太空宇宙 更新时间:2023-11-04 05:35:38 24 4
gpt4 key购买 nike

考虑这段代码:

// Example program
#include <stdio.h>

typedef enum{
enum_1,
enum_2
}my_enum;
/*
* this is not how the function works but when I debug
* it will always returns enum_1 (verified when using the debugger)
* so I hope this is enough
*/
int fun_1(int arg_1){return enum_1;}
const int const_1 = 10;
const int const_2 = 20;
int main()
{
int arg_1 = 0;

int var_1 = fun_1(arg_1);

int var_2 = (var_1 == (enum_1
|| enum_2))
? const_1*10 // I expect this result
: const_2*10; // instead I get this. why?
printf("%d\n" , var_2);

if(var_1==enum_1)
var_2 = const_1*10; // here it works fine
printf("%d\n" , var_2);

return 0;
}

我正在调试这段代码,var_1 应该得到 enum_1 的值。它确实如此,但不知何故“?:”运算符没有给我预期的结果 - 它没有将 const_1*10 分配给 var_2const_2*10。当我继续调试并转到 if 语句时,我得到了预期的结果。这是为什么?

我在 windows 8.1 上使用 windriver workbench

编辑

我将示例更改为可运行版本,正如 tkausl 所述,问题是使用 (var_1 == (enum_1 || enum_2)) 而不是 (var_1 == enum_1 || var_1 == enum_2))

最佳答案

您不是将 var_1enum_1 进行比较,也不是将其与 enum_2 进行比较,而是将其与 (enum_1 || enum_2) 进行比较,你可能想要 (var_1 == enum_1 || var_1 == enum_2)

关于c - ? : unexpected behaviour - although condition is true, ?部分未执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37966766/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com