Tag: if statement

“if”没有花括号的块会使后续的“else if”嵌套

AFAIK,如果没有提供“if”块,那么花括号内部只会考虑1个语句。 例如 if(..) statement_1; statement_2; 无论选项卡如何, if块中都只考虑statement_1 。 以下代码与此不相符: int main () { if(false) // outer – if if(false) // nested – if cout << "false false\n"; else if(true) cout << "true\n"; } 上面的代码不打印任何东西。 它应该打印”true” 。 else if自动嵌套在外部 if块中,它将显示为else if 。 g++ -Wall发出警告,但这不是问题。 一旦你把花括号,一切都按预期的顺利。 为何如此不同的行为? [海湾合作委员会演示: 没有牙箍和大括号 ]。

为什么编译器没有警告我一个空的if语句?

我正在使用Keil uVision v4.74并启用了“All Warnings”选项。 我写了以下故意代码: if(condition matched) { //do something } 当我重建我的项目时,我得到0个错误,0个警告。 但是,当我不小心写道: if(condition matched); { //do something } 我也有0个错误,0个警告。 我几乎不可能发现那么小; if条件之后是问题的根源。 为什么编译器不将它视为警告并通知我?

if条件下的逗号运算符

int a = 1, b = 0; if(a, b) printf(“success\n”); else printf(“fail\n”); if(b, a) printf(“success\n”); else printf(“fail”); 这是一个cpp文件,我在Visual Studio 2010中得到了输出 fail success 为什么会这样? 你能解释一下吗?

if和switch语句的函数数组的性能

我正在编写一个非常重要的性能代码部分,我有一个关于用函数指针数组替换case语句(或if语句)的疯狂想法。 让我certificate一下; 这是正常版本: while(statement) { /* ‘option’ changes on every iteration */ switch(option) { case 0: /* simple task */ break; case 1: /* simple task */ break; case 2: /* simple task */ break; case 3: /* simple task */ break; } } 这是“回调函数”版本: void task0(void) { /* simple task */ } void task1(void) […]

为什么这个if条件失败用于比较负整数和正整数

#include int arr[] = {1,2,3,4,5,6,7,8}; #define SIZE (sizeof(arr)/sizeof(int)) int main() { printf(“SIZE = %d\n”, SIZE); if ((-1) < SIZE) printf("less"); else printf("more"); } 用gcc编译后的输出是”more” 。 即使-1 < 8为什么if条件也会失败?

Switch case语句如何实现或在内部工作?

我在某处读到了switch语句使用“二进制搜索”或一些排序技术来精确选择正确的情况,与else-if梯形图相比,这增加了它的性能。 如果我们按顺序给出案例,那么交换机的工作速度会更快吗? 是这样吗? 你能在这个问题上添加宝贵的建议吗? 我们在这里讨论了相同的问题并计划发布作为一个问题。