三星笔记本静音模式只能调试模式打开

23:50 提问
C语言中关于if if-else语句的问题?
运行环境 :VS2013
代码作用:输入三个数然后判断其中最小的一位数然后输出的
#include&stdio.h&
#include&stdlib.h&
int main()
int x, y, z,
scanf_s("%d %d %d", &x, &y, &z);
if (x & y)
else if (y & x)
//这个if不起作用
else if (min & z)
//这样写构成了一个级联的if -else if 语句
printf("%d", min);
system("pause");
代码2如下:
#include&stdio.h&
#include&stdlib.h&
int main()
int x, y, z,
scanf_s("%d %d %d", &x, &y, &z);
if (x & y)
else (y & x)
//删除if后
if (min & z)
//删除else后
printf("%d", min);
system("pause");
这两个程序那个比较好呢?运行的结果都是一样的,不知道1好还是2好。请同胞们给些意见 多谢了!
按赞数排序
不是好不好的问题。第一段、第二段都有严重的错误,不能说好不好,只能说对不对。
在if (...) {} else if (...
) {} else{}这样的判断中,所有的分支只会执行一个。
在你的第一段代码中
if (x & y)
else if (y & x)
//这个if不起作用
else if (min & z)
//这样写构成了一个级联的if -else if 语句
if(x&y)和else if(y&x)几乎是矛盾的。也就是说只有当x==y的时候才会去做最下面的那个min和z的比较。而当做到这个比较的时候,min还是0,
if (x & y)
else (y & x)
//删除if后
else后面不能跟条件。这里应该是语法错误,编译不能通过。如果要改的话,可以
else //(y & x)
//删除if后
第一个代码,后面的if判断是否发生会受到前面判断结果的影响,第二个代码,把else改成if的话(这个错误编译都通过不了)后,是三个if语句,一定会判断三次。
用哪个好,要根据你的逻辑~
先把程序写对再说
第一个程序x=1 y=2 z=0 结果都不对。
因为后面的分支没执行。
第二段代码根本不能编译。
正确写法:
if (y & min) min =
if (z & min) min =
当然是第二种代码好的啊
第一个代码,后面的if判断是否发生会受到前面判断结果的影响,第二个代码,把else改成if的话(这个错误编译都通过不了)后,是三个if语句,一定会判断三次。
用哪个好,要根据你的逻辑~
具体分析已有人回答
用三目运算符简洁而方便
这两段程序都不太对,可以看一下C语言书,关于if-else 里面讲的很清楚的
这个问题有点高难度,我建议你去问你的老师或者公司里的一些同事比较好
其他相似问题C++ if...else 语句
一个 if 语句 后可跟一个可选的 else 语句,else 语句在布尔表达式为假时执行。
C++ 中 if...else 语句的语法:
if(boolean_expression)
// 如果布尔表达式为真将执行的语句
// 如果布尔表达式为假将执行的语句
如果布尔表达式为 true,则执行 if 块内的代码。如果布尔表达式为 false,则执行 else 块内的代码。
#include &iostream&
int main ()
// 局部变量声明
int a = 100;
// 检查布尔条件
if( a & 20 )
// 如果条件为真,则输出下面的语句
cout && "a 小于 20" &&
// 如果条件为假,则输出下面的语句
cout && "a 大于 20" &&
cout && "a 的值是 " && a &&
当上面的代码被编译和执行时,它会产生下列结果:
a 的值是 100
一个 if 语句后可跟一个可选的 else if...else 语句,这可用于测试多种条件。
当使用 if...else if...else 语句时,以下几点需要注意:
一个 if 后可跟零个或一个 else,else 必须在所有 else if 之后。
一个 if 后可跟零个或多个 else if,else if 必须在 else 之前。
一旦某个 else if 匹配成功,其他的 else if 或 else 将不会被测试。
C++ 中的 if...else if...else 语句的语法:
if(boolean_expression 1)
// 当布尔表达式 1 为真时执行
else if( boolean_expression 2)
// 当布尔表达式 2 为真时执行
else if( boolean_expression 3)
// 当布尔表达式 3 为真时执行
// 当上面条件都不为真时执行
#include &iostream&
int main ()
// 局部变量声明
int a = 100;
// 检查布尔条件
if( a == 10 )
// 如果 if 条件为真,则输出下面的语句
cout && "a 的值是 10" &&
else if( a == 20 )
// 如果 else if 条件为真,则输出下面的语句
cout && "a 的值是 20" &&
else if( a == 30 )
// 如果 else if 条件为真,则输出下面的语句
cout && "a 的值是 30" &&
// 如果上面条件都不为真,则输出下面的语句
cout && "没有匹配的值" &&
cout && "a 的准确值是 " && a &&
当上面的代码被编译和执行时,它会产生下列结果:
没有匹配的值
a 的准确值是 100
反馈内容(*必填)
截图标记颜色
联系方式(邮箱)
联系邮箱:
投稿页面:
记住登录状态
重复输入密码2. if/else语句2. if/else语句if语句还可以带一个else子句(Clause),例如:if (x % 2 == 0)
printf("x is even.\n");
printf("x is odd.\n");这里的%是取模(Modulo)运算符,x%2表示x除以2所得的余数(Remainder),C语言规定%运算符的两个操作数必须是整型的。两个正数相除取余数很好理解,如果操作数中有负数,结果应该是正是负呢?C99规定,如果a和b是整型,b不等于0,则表达式(a/b)*b+a%b的值总是等于a,再结合讲过的整数除法运算要Truncate Toward Zero,可以得到一个结论:%运算符的结果总是与被除数同号(想一想为什么)。其它编程语言对取模运算的规定各不相同,也有规定结果和除数同号的,也有不做明确规定的。取模运算在程序中是非常有用的,例如上面的例子判断x的奇偶性(Parity),看x除以2的余数是不是0,如果是0则打印x is even.,如果不是0则打印x is odd.,读者应该能看出else在这里的作用了,如果在上面的例子中去掉else,则不管x是奇是偶,printf("x is odd.\n");总是执行。为了让这条语句更有用,可以把它封装(Encapsulate)成一个函数:void print_parity(int x)
if (x % 2 == 0)
printf("x is even.\n");
printf("x is odd.\n");
}把语句封装成函数的基本步骤是:把语句放到函数体中,把变量改成函数的参数。这样,以后要检查一个数的奇偶性只需调用这个函数而不必重复写这条语句了,例如:print_parity(17);
print_parity(18);if/else语句的语法规则如下:语句 → if (控制表达式) 语句 else 语句右边的“语句”既可以是一条语句,也可以是由{}括起来的语句块。一条if语句中包含一条子语句,一条if/else语句中包含两条子语句,子语句可以是任何语句或语句块,当然也可以是另外一条if或if/else语句。根据组合规则,if或if/else可以嵌套使用。例如可以这样:if (x & 0)
printf("x is positive.\n");
else if (x & 0)
printf("x is negative.\n");
printf("x is zero.\n");也可以这样:if (x & 0) {
printf("x is positive.\n");
if (x & 0)
printf("x is negative.\n");
printf("x is zero.\n");
}现在有一个问题,类似if (A) if (B) C; else D;形式的语句怎么理解呢?可以理解成if (A)
D;也可以理解成if (A)
D;在讲过,C代码的缩进只是为了程序员看起来方便,实际上对编译器不起任何作用,你的代码不管写成上面哪一种缩进格式,在编译器看起来都是一样的。那么编译器到底按哪种方式理解呢?也就是说,else到底是和if (A)配对还是和if (B)配对?很多编程语言的语法都有这个问题,称为Dangling-else问题。C语言规定,else总是和它上面最近的一个if配对,因此应该理解成else和if (B)配对,也就是按第二种方式理解。如果你写成上面第一种缩进的格式就很危险了:你看到的是这样,而编译器理解的却是那样。如果你希望编译器按第一种方式理解,应该明确加上{}:if (A) {
D;顺便提一下,浮点型的精度有限,不适合用==运算符做精确比较。以下代码可以说明问题:double i = 20.0;
double j = i / 7.0;
if (j * 7.0 == i)
printf("Equal.\n");
printf("Unequal.\n");不同平台的浮点数实现有很多不同之处,在我的平台上运行这段程序结果为Unequal,即使在你的平台上运行结果为Equal,你再把i改成其它值试试,总有些值会使得结果为Unequal。等学习了你就知道为什么浮点型不能做精确比较了。习题1、写两个表达式,分别取整型变量x的个位和十位。2、写一个函数,参数是整型变量x,功能是打印x的个位和十位。

我要回帖

更多关于 三星usb调试模式 的文章

 

随机推荐