基本条件运算符
Basic Conditional Operator
我已经尝试使用条件运算符来减少以下 C 程序中的代码行,但是,我没有得到想要的结果。
Objective - 如果 y > 7
则将 x
的值设置为 50
否则将其设置为 25
#include <stdio.h> // Conditional Operator
int main()
{
int x, y;
printf("Enter x: ", x);
scanf("%d", &x);
printf("Enter y: ", y);
scanf("%d", &y);
if (x = y > 7 ? 25 : 50)
{
printf("Value of x: %d", x);
}
else
{
printf("Failed\n");
}
}
Objective - To set the value of x to 50 if y > 7 else set it to 25
那么你在这里交换了值:
y > 7 ? 25 : 50
^^ ^^
wrong
必须是:
y > 7 ? 50 : 25
原因是:
y > 7 ? 50 : 25
\---/ | |
| | -----> Result if condition is FALSE
| |
| ---> Result if condition TRUE
|
condition
其他说明
为什么总是用50或25覆盖x作为输入?
始终检查 scanf
中的 return 值
无法访问您的 if
语句的 else
部分。所以可以删除。
printf("Enter y: ",y);
是错误的。你不打印 y
。所以删除 ,y
所以简单地做:
#include <stdio.h>
int main(void)
{
int x,y;
printf("Enter y: ");
if (scanf("%d",&y) != 1)
{
puts("wrong input");
return 0;
}
x = y > 7 ? 50 : 25;
printf("Value of x: %d", x);
return 0;
}
最后的笔记
您的代码有这一行:
if (x = y > 7 ? 25 : 50)
在这里,您在 if
条件中对 x
进行赋值,然后将赋值用作 if
.
的条件
虽然它是完全合法的 C 代码,但大多数程序员认为它很糟糕。原因是容易与
混淆
if (x == y > 7 ? 25 : 50)
^^
Did you really want a compare!?
一般来说,最好避免在 if
条件下赋值,即你可以这样做:
x = y > 7 ? 25 : 50;
if (x)
相反。这样做的另一个好处是,无法到达 else
部分也更加清楚。
我已经尝试使用条件运算符来减少以下 C 程序中的代码行,但是,我没有得到想要的结果。
Objective - 如果 y > 7
则将 x
的值设置为 50
否则将其设置为 25
#include <stdio.h> // Conditional Operator
int main()
{
int x, y;
printf("Enter x: ", x);
scanf("%d", &x);
printf("Enter y: ", y);
scanf("%d", &y);
if (x = y > 7 ? 25 : 50)
{
printf("Value of x: %d", x);
}
else
{
printf("Failed\n");
}
}
Objective - To set the value of x to 50 if y > 7 else set it to 25
那么你在这里交换了值:
y > 7 ? 25 : 50
^^ ^^
wrong
必须是:
y > 7 ? 50 : 25
原因是:
y > 7 ? 50 : 25
\---/ | |
| | -----> Result if condition is FALSE
| |
| ---> Result if condition TRUE
|
condition
其他说明
为什么总是用50或25覆盖x作为输入?
始终检查
中的 return 值scanf
无法访问您的
if
语句的else
部分。所以可以删除。printf("Enter y: ",y);
是错误的。你不打印y
。所以删除,y
所以简单地做:
#include <stdio.h>
int main(void)
{
int x,y;
printf("Enter y: ");
if (scanf("%d",&y) != 1)
{
puts("wrong input");
return 0;
}
x = y > 7 ? 50 : 25;
printf("Value of x: %d", x);
return 0;
}
最后的笔记
您的代码有这一行:
if (x = y > 7 ? 25 : 50)
在这里,您在 if
条件中对 x
进行赋值,然后将赋值用作 if
.
虽然它是完全合法的 C 代码,但大多数程序员认为它很糟糕。原因是容易与
混淆if (x == y > 7 ? 25 : 50)
^^
Did you really want a compare!?
一般来说,最好避免在 if
条件下赋值,即你可以这样做:
x = y > 7 ? 25 : 50;
if (x)
相反。这样做的另一个好处是,无法到达 else
部分也更加清楚。