【问题标题】:Why the control goes in "else" part? [closed]为什么控制进入“其他”部分? [关闭]
【发布时间】:2012-08-10 11:17:23
【问题描述】:
int a = 8;

if (a==8)
    printf("x");
else 
    printf("y");

虽然a 等于8,但它输出y

【问题讨论】:

  • 这就是你在main中的所有代码吗?
  • 上面的代码总是打印x。如果您的代码打印了其他内容,那么您在问题中省略了重要信息。
  • 他一定是设计了自己的编译器,结果一团糟。
  • 尝试重新编译你的代码(“clean-compile”)。有时这可以修复像您描述的那样奇怪的错误。

标签: c


【解决方案1】:

上面的代码总是打印x。如果您的代码打印了其他内容,那么您在问题中省略了重要信息。

要找出可能是什么,试试这个:

  1. int a = 8; 之前插入 #undef a 以确保没有与代码混淆的 C 预处理器宏。

  2. 交换条件以查看a 是否真的如您所愿:

    if( 8 == a )
    

    这个小技巧还可以防止你意外分配错误(if( a = 8 )

【讨论】:

  • 为了安全起见,还应该 #undef if、else 和 printf...
  • @TomTanner 啊啊啊,很亮#define printf(a) fprintf(stdout,"y") or #define if(x) while(0) and #define else
  • 第 2 点:如果他这样做了(意外分配),它将采取他声称不会发生的“那么”路径。 if (a != 8) 可能是更有用的检查。
  • 我知道你们都欠我一个大大的道歉,其实它的浮动相当 int。
  • :-/ 对于像8 这样的简单常量,这无关紧要。
猜你喜欢
  • 2012-08-11
  • 1970-01-01
  • 2021-12-12
  • 2015-11-22
  • 2019-02-20
  • 1970-01-01
  • 2018-06-10
  • 2020-09-28
  • 1970-01-01
相关资源
最近更新 更多