大连理工大学吧 关注:302,147贴子:7,071,717
  • 3回复贴,共1

C语言小问题 学软件的进

只看楼主收藏回复

(1)
#include <stdio.h>
#include <conio.h>
int
main ( )
{
int i = 1 , k ;
k = 0 ;
if ( 1.0 / k || 3 / 2 )
{
printf ("%d" , i ) ;
} getch ( ) ;
return 0 ;
}
(2)
#include <stdio.h>
#include <conio.h> int
main ( )
{
int i = 1 , k ;
k = 0 ;
if ( 1 / k )
{
printf ("%d" , i ) ;
} getch ( ) ;
return 0 ;
}
(3)
#include <stdio.h>
int
main ( )
{
int k = 0 ;
if ( 1.0 / k )
{
putchar ('a' ) ;
}
return 0 ;
}
在Vc 6.0中和Microsoft Visual C++ 2010 Express 为什么第一个版本不会报错,而第二个版本会报错, 为什么 第三个版本中 if 判断为真。。。 C语言中关于x/0,或者x/0.0是如何规定的。。。 求牛人解答。。。


来自贴吧神器1楼2013-01-06 20:03回复
    1和k都是整数,于是没有被强制转换成浮点。定点数除法中除数是0,会触发中断。至于1.0/0为什么没有中断,参考CPU处理浮点数除法。
    if为真是因为里面的表达式值不为0。


    2楼2013-01-06 20:14
    回复
      gcc下编译是不报错的,运行报错,错误码0xC0000094。VC不清楚。


      3楼2013-01-06 20:15
      回复
        感谢回答。。。 回去我再好好研究研究哈。。。


        来自贴吧神器4楼2013-01-07 21:59
        回复