分享

C#-逻辑表达式中的短路

 新用户26922hFh 2022-01-08

 一般多出现在面试题中或者大学的软件专业的试卷中,短路主要在逻辑&&(与)与逻辑||(或)的逻辑表达式中

  逻辑&&中的短路,代码如下

  int num1=3, num2=5;

  if (++num1 > 5 && ++num2 >=6)

  {

  Console.WriteLine("逻辑&表达式中的短路");

  }

  Console.WriteLine("num1 {0} num2 {1}", num1, num2);

  一般猜测 num1=4;num2=6; 实际运行结果 num1=4; num2=5

  首先要知道逻辑&&怎么用,使用逻辑&&连接的表达式必须两个都为真整个表达式的结果才为真;

  一元运算符 ++变量名的怎么使用,++变量名 先自加后使用

  按照上面所说num1=4;num2的值应该是6,怎么等于5,在C#中为了执行效率更高些,因为逻辑&&必须两边都为真结果才为真,

  先判断++num1>5,因为++num1的值为4,所以++num1>5结果为假,所以&&后面的++num2直接跳过,++num2根本没有执行,所以++num2还是原值5

  与此同理逻辑||的短路一样

  if (++num1 < 5 || ++num2 >=6)

  {

  Console.WriteLine("逻辑&表达式中的短路");

  }

  Console.WriteLine("num1 {0} num2 {1}", num1, num2);

  运行结果++num1=4; num2=5;

  因为逻辑||是有一个条件为真结果为真,所以++num1<5的结果为真,直接跳过++num2>6

  所以++num1执行自加等于4; num2不执行还是原值 5;

  ========if-else的配对=======

  int age=15;

  string name="zs";

  if (age > 18)

  if (name=="ls")

  Console.WriteLine("if-else的配对");

  else

  Console.WriteLine("与哪个if配对");

  Console.ReadKey();

  运行结果为如下

  C#-逻辑表达式中的短路 027

  为什么什么东西都没有输出来,else都是与自己最近上面的if配对

  所以else是属于第二个if的,首先因为条件为假,所以下面的if-else不能执行;这样看不清楚,加上大括号就会一目了然,如图所示

  C#-逻辑表达式中的短路 027

  由此看来大括号最好一定带上,把一条语句写成语句块,即使语句块只有一条.

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多