Tag: if statement

与不使用if的测试相比,if语句的效率如何? (C ++)

我需要一个程序来获取两个数字中较小的数字,我想知道是否使用标准“如果x小于y” int a, b, low; if (a < b) low = a; else low = b; 或多或少效率高于此: int a, b, low; low = b + ((a – b) & ((a – b) >> 31)); (或者将int delta = a – b置于顶部并将a – b实例重新放置的变化)。 我只是想知道哪一个更有效(或者如果差异太小而不相关),以及if-else语句与一般的替代方案的效率。

if语句整数

我认为这是一个简单的问题,但我正在努力解决以下问题。 在示例中,我有以下语句(语言是C): int foobar if (foobar) { // do something. } 现在,如果我对此是正确的,当foobar不为零时,这种说法是正确的。 所以它应该与if(foobar!= 0)相同; 但是如果foobar变成负数会怎么样?

BMI计算器C代码

我正在尝试编写一个简单的BMI计算器,但由于某些原因,当我尝试175为高度(公式为1.75)和70为质量时,它应该给22.8,这是在健康的范围,但它让我体重不足。 我知道这可能是一个简单的错误,但我看不到它。 float main(void) { float height; printf(“Enter your height in cm:\n”); scanf(“%f”,&height); float weight; printf(“Enter your weight in kg:\n”); scanf(“%f”,&weight); float bmi; bmi = (weight/(height/100)*(height/100)); if (bmi <= 16) { printf("Severely Underweight\n"); } else if (16 < bmi <= 18.5) { printf("Underweight\n"); } else if (18.5 < bmi <= 25) { printf("Healthy\n"); } else […]

如何使用C将带有2个变量的IF语句转换为开关函数?

我有一个IF语句,我想转换成一个Switch语句……但它有2个变量! 是否可以在C上进行? 这是一个摇滚,纸,剪刀游戏: (R代表岩石,P代表纸张,S代表剪刀) char play1, play2; printf(“\nPlayer 1 – Enter your Play: “); scanf (“%c”, &play1); printf(“\nPlayer 2 – Enter your Play: “); scanf (” %c”, &play2); if (play1 == ‘R’ && play2 == ‘P’) { printf (“Paper wins!”); } else if (play1 == ‘R’ && play2 == ‘S’) { printf (“Rock wins!”);} else […]

冲突的野牛圈

为了解决悬空的其他问题,我使用了以下解决方案: stmt : stmt_matched | stmt_unmatched ; stmt_unmatched : IF ‘(‘ exp ‘)’ stmt | IF ‘(‘ exp ‘)’ stmt_matched ELSE stmt_unmatched ; stmt_matched : IF ‘(‘ exp ‘)’ stmt_matched ELSE stmt_matched | stmt_for | … ; 为了定义关于for循环的语法规则,由于同样的问题,我产生了冲突转移/减少: stmt_for : FOR ‘(‘ exp ‘;’ exp ‘;’ exp ‘)’ stmt ; 我怎么解决这个问题?

如果测试,测试相同的多个条件?

我试着谷歌搜索失败了。 使用C,我有一个IF语句。 我想针对两个非连续值测试变量。 有可能吗? if(state == 1 || 3) 意味着如果state为1或state为3。 或者它必须是 if(state == 1 || state == 3) 我认为第一个实际上意味着如果状态是1或3,这意味着测试将始终为真(如果为真或真)。 有没有办法写这个而不必多次重写变量名? 不,我不想使用case / switch语句。 我想减少打字。

与if语句中的字符串比较不起作用

我尝试比较从scanf和fscanf获得的两个字符串。 我已经弄明白每个变量里面的内容是什么。 它都显示相同的字符串,但在if语句中与这两个字符串进行比较后,它不起作用并执行else语句。 我的代码出了什么问题? int main(void) { … char input[256]; printf(“Enter your name: “); scanf(“%s”,&input); fp = fopen(_FILE,”r+”); for(i=0;i<textlines(_FILE);i++) { fscanf(fp,"%s %d",stuff[i].name,&stuff[i].salary); if(input == stuff[i].name) { // Update name here } else { printf("Not Found"); } } return 0; }

至“if,if,if”或“if,else if else else if else”

我正在编写一些数据分析代码,并且必须根据某些标准排除样本。 在实践中,我最终编写如下代码: bool Test(SampleType sample) { if( ! SubTest1(sample) ) return false; if( ! SubTest2(sample) ) return false; if( ! SubTest3(sample) ) return false; return true; } 以下似乎与我相同: bool Test(SampleType sample) { if( ! SubTest1(sample) ) return false; else if( ! SubTest2(sample) ) return false; else if( ! SubTest3(sample) ) return false; else return true; […]

如何将字符串的最后n个字符与C中的另一个字符串进行比较

想象一下,我有两个字符串,其中一个是“/sdcard/test.avi”之类的url,另一个是“/sdcard/test.mkv”。 我想写一个if语句,查看字符串的最后四个字符是否为“.avi”或不是C.我怎么能这样做? 使用strcmp或者是什么以及如何使用?

在Switch案例中默认

以下是我需要优化和计划的代码,以便切换到最佳状态。 但我可以比较一下。 所以我计划将comaparision(len> 3)作为默认情况。 如果我将比较部分(len> 3)作为默认情况并在swith中添加默认值,它会更快吗? 或者我如何将下面的代码作为switch语句? if ( len > 3 ) { which will happen more often; } else if ( len == 3 ) { next case which may occur often; } else if ( len == 2 ) { the next priority case; } else { and this case occurs rarely; […]