与运算符和或运算符的语句执行顺序

与运算符和或运算符的语句执行顺序

有一个老生常谈的问题,那就是与运算符和或运算符的语句执行顺序。

express1 || express2

先执行表达式express1如果为“真”,express2将不被执行,express2仅在express1为“假”时才被执行。因为第一个表达式为真了,整个表达式都为真,所以没有必要再去执行第二个表达式了。

express1 && express2

先执行表达式express1如果为“假”,express2将不被执行,express2仅在express1为“真”时才被执行。因为第一个表达式为假了,整个表达式都为假了,所以没有必要再去执行第二个表达式了。

于是,他并不是你所想像的所有的表达式都会去执行,这点一定要明白,不然你的程序会出现一些莫明的运行时错误。

例如,下面的程序:

if (sum > 100 && (fp=fopen( filename,"a") != NULL )
{
    fprintf(fp, "Warring: it beyond one hundred/n");
    ......
}

fprintf( fp, " sum is %id /n", sum );
fclose( fp );

本来的意图是,如果sum > 100,向文件中写一条出错信息,为了方便,把两个条件判断写在一起,于是,如果sum<=100时,打开文件的操作将不会做,最后,fprintffclose就会发现未知的结果。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
1、类型如果相兼容的两个变量,可以使用自动类型转换或者强制类型转换, 但是,如果两个类型的变量不兼容,比如 string与int或者string 与double, 这个时候我们可以使用一个叫做Convert的转换工厂进行转换。 注意:使用Convert进行类型转换,也需要满足一个条件: 面儿上必须要过的去。 2、算数运算符 ++:分为前++和后++,不管是前++还是后++,最终的结果都是给这个变量加一。 区别表现表达式当中,如果是前++,则先给这个变量自身加一,然后带着这个加一后的值去参与运算。 如果是后++,则先拿原值参与运算,运算完成后,再讲这个变量自身加一。 --:同上。 3、 对于向加加或者减减这样只需要一个操作数就能完成的运算,我们称之为一元运算符。 + - * / % 对于这些需要两个或以上才能完成运算的操作符,我们称之为二元运算符。 一元运算符的优先级要高于而元运算符。 如果在一个表达式当中,既有一元运算符,又有二元运算符,我们首先计算一元运算符。 int number=10; int result=10 + ++number; 4、关系运算符 > < >= <= == != 关系运算符是用来描述两个事物之间的关系 由关系运算符连接的表达式称之为关系表达式。 5、bool类型 在c#中我们用bool类型来描述对或者错。 bool类型的值只有两个 一个true 一个false 6、逻辑运算符 && 逻辑与 ||逻辑或 !逻辑非 又逻辑运算符连接的表达式叫做逻辑表达式 逻辑运算符两边放的一般都是关系表达式或者bool类型的值。 5>3 &&true; 3>5||false !表达式 逻辑表达式的结果同样也是bool类型 7、复合赋值运算符 int number=10; += : number+=20; number=number+20; -= number-=5; number=number-5; *= number*=5; number=number*5; /= %= 中级程序员 --2年 ---高级程序员---->小组组长---> 项目经理 业务经理 产品经理 高级程序员 不明觉厉 软件开发工程师 顺序结构:程序从Main函数进入,从上到下一行一行的执行,不会落下任何一行。 分支结构:if if-else 选择结构:if else-if switch-case 循环结构:while do-while for foreach 8、 if语句: 语法: if(判断条件) { 要执行的代码; } 判断条件:一般为关系表达式或者bool类型的值。 执行过程:程序运行到if处,首先判断if所带的小括号中的判断条件, 如果条件成立,也就是返回true,则执行if所带的大括号中的代码, 如果判断条件不成立,也就是返回一个false。则跳过if结构,继续向下执行。 if结构的特点:先判断,再执行,有可能一行代码都不执行 用于一种情况的判断。 9、if-else 语法: if(判断条件) { 执行的代码; } else { 执行的代码 } 执行过程:程序执行到if处,首先判断if所带的小括号中的判断条件是否成立, 如果成立,也就是返回一个true,则执行if所带的大括号中的代码, 执行完成后,跳出if-else结构。 如果if所带的小括号中的判断条件不成立,也就是返回一个false, 则跳过if语句执行else所带的大括号中的语句执行完成后,跳出if-else结构。 if-else特点:先判断,再执行,最少都要执行一条代码。 用于两种情况的判断 注意:else永远跟离它最近的那个if配对 10、if else-if 作用:用来处理多条件的区间性的判断。 语法: if(判断条件) { 要执行的代码; } else if(判断条件) { 要执行的代码; } else if(判断条件) { 要执行的代码; } else if(判断条件) { 要执行的代码; } ........ else { 要执行的代码; } 执行过程;程序首先判断第一个if所带的小括号中的判断条件,如果条件成立,也就是返回一个true, 则执行该if所带的大括号中的代码,执行完成后,立即跳出if else-if结构。 如果第一个if所带的判断条件不成立,也就是返回一个false,则继续向下进行判断,依次的判断每一个if所带 的判断条件,如果成立,就执行该if所带的大括号中的代码,如果不成立,则继续向下判断, 如果每个if所带的判断条件都不成立,就看当前这个if else-if结构中是否存在else。 如果有else的话,则执行else中所带的代码,如果没有else,则整个 if-else if神马都不做。 else可以省略。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值