有沒有辦法讓我用較小的字符寫下面的代碼?
if (num == 1 || num == 2 || num == 3 || num == 4|| num == 5)
{
printf("Enter number you want to convert:\n");
scanf("%d", &a);
}
else
{
goto quit;
}
就像在 SQL 中一樣,我們使用:
if (num in 1,2,3,4,5)
或者像一些想象的語言,如果我們可以使用類似的東西:
if num in [1-5]
uj5u.com熱心網友回復:
使用關系比較運算子檢查一個數字是否在范圍的下限和上限內:
if (num >= 1 && num <= 5)
{
printf("Enter number you want to convert:\n");
scanf("%d", &a);
}
else
{
goto quit;
}
uj5u.com熱心網友回復:
如果num可以在一個范圍內進行比較,例如1 to 5可以簡單地寫
if (num >= 1 && num <= 5)
{
///.....
}
這在其他評論和答案中有所提及。但是,如果您需要比較的數字不在一個范圍內,那么代碼可能會很復雜。對我來說,更簡單的方法是:
if (num == 1 || num == -2 || num == 3 || num == 10 || num == 5)
{
//......
}
但是還有另一種撰寫代碼的方法,例如 SQL(問題中提到)。使用可變引數可以實作一個功能:
is_equal(total number of arguments with num variable, num , list of numbers need to compare ..))
這可以提供類似的代碼if (num in 1,2,3,4,5)
#include <stdio.h>
#include <stdarg.h>
int is_equal(int count,...) {
va_list valist;
int ret = 0 ;
int num ;
/* initialize valist for num number of arguments */
va_start(valist, count);
/* access all the arguments assigned to valist */
for (int i = 0; i < count; i ) {
if(i == 0) num = va_arg(valist, int) ;
else{
if(num == va_arg(valist, int))
ret = 1 ;
}
}
/* clean memory reserved for valist */
va_end(valist);
return ret;
}
int main() {
int num = 12 ;
printf("%d\n" , is_equal(5 ,num , 1, 2, 3, 4)) ;
printf("%d\n" , is_equal(4 ,num, 1, 2, 3)) ;
printf("%d\n" , is_equal(6 ,num, 1, 2, 3, 4, 12)) ;
printf("%d\n" , is_equal(8 ,num, 1, 2, 3, 4, 7, -14, 12)) ;
printf("%d\n" , is_equal(9 ,num, 1, 2, 3, 4, 7, -14, -12 , 120)) ;
}
輸出 :
0
0
1
1
0
uj5u.com熱心網友回復:
或使用switch:
switch (num)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("Enter number you want to convert:\n");
scanf("%d", &a);
break;
default:
goto quit;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/507343.html
標籤:C
