2 u012771039 u012771039 于 2013.12.04 19:52 提问

C#简单问题,C# if语句的代码也进行计算吗?
c#

为什么下面代码的运行结果是a=4 b=1
a=4 b=1
条件语句也进行运算吗?

using System;
using System.Collections.Generic;
using System.Text;

namespace 例3_04
{
class Program
{
static void Main(string[] args)
{
int a = 3, b = 2;
if (a > b && a++ > b--)
Console.WriteLine("a={0} b={1}", a, b);
if (a > b || a-- > b++)
Console.WriteLine("a={0} b={1}", a, b);
Console.ReadKey();
}
}
}
CSDN移动问答

3个回答

haolong8986
haolong8986   2013.12.04 20:00
已采纳

if (a > b && a++ > b--):相当于执行if(a>b && a>b)再a++;b--;因此比较成立,并且a变为3,b变为1

第二个 if (a > b || a-- > b++)中,|| 前的 a>b 成立,则if条件一定为true,|| 后语句不再执行,因此a--和b++未进行运算

Rockma
Rockma   2013.12.08 21:57

第1个if表达式 if (a > b && a++ > b--) 中a++>b-- ,
先执行比较 a > b , 然后执行 a=a+1,b=b-1的赋值工作 。
即 3 > 2 ,然后 a = 3+1, b= 2-1 ,得到a=4,b=1.

注意:a++ 和 ++a的区别

第2个if表达式if( a > b || a--> b++)

当执行完a>b之后,即4>1之后,并不再执行或后面的表达式。所以a和b没有变化。

这也就是和 & 与&& , 或 | 与 || 运算符的区别。

lqtlcjh
lqtlcjh   2013.12.10 17:59
1.运行了第一个if语句,再运行第二个if语句。
2.if (a > b && a++ > b--)两个条件成立,所以&&为true,先执行对比运行再a++与b--。此时a=4,b=1。 
3.if (a > b || a-- > b++)中第一个条件成立,第二个条件不成立,但只要有一个成立,||就为true。a++ > b--先做比较再a-1,b+1(等于if(a>b=true)then a++,b--),但由于条件不成立,所以不会执行下一步操作(a--,b++操作)
4.&&与||都成立,所以输出两次a,b值,但是||中a,b值没有改变,所以两次输出一样。
5.a++先执行完a再a++,++a先a=a+1再执行a操作
Csdn user default icon
上传中...
上传图片
插入图片