int x=2;
float y=2.0f;
if(x==y)Console.WriteLine("Equal");
else Console.WriteLine("NOT Equal");
为什么int和float型数值能直接用x==y比较,而且还是Equal。我不懂,我都认为是编译出错的!
double i=10,j=0;
Cons;le.writeLine(i/j);
结果为什么是正无穷大?
char x =‘a’;
char y = ‘b’;
string s = x+y;
Console.WriteLine(i/j);
结果为什么变异出错?

解决方案 »

  1.   

    为什么int和float型数值能直接用x==y比较,而且还是Equal。
    == 的时候按 int 的类型比较 2.0    2==2第二个我也没研究过,不知道了。char x =‘a';
    char y = ‘b';x+y 加的不是char 是x所占的大小
    int 在怎么加也不=string 这些希望对你有帮助。
      

  2.   

    浮点数并不是精确的,即使是0.0f,也会返回正无穷大的。而下面那个返回的是非数字
     double  j = 0;
    Console.WriteLine(Math.Pow(10,-500) / j);
      

  3.   

    int和float都是值类型,是不是数值上都默认是2,所以相等?关于x+y的不太懂?请重新解释一下
      

  4.   

    char x =‘a’;
    char y = ‘b’;
    string s = x+y;//计算机不知道是将x,y相加为ab,还是将他们的ascii码值相加,这里必须有个强制转换。
      

  5.   

    if(x==y)Console.WriteLine("Equal");
    貌似在做x==y时会因为x和y的类型不同,自动进行类型转换
    而2.0f转换为int类型值就是2,所以相等至于
    double i=10,j=0;
    i/j不是很清楚为什么是正无穷大而且没有catch到
    int i=10,j=0;
    i/j却是捕获异常试图除以零。