您的位置:程序门 -> linux/unix社区 -> 程序开发区



为什么两个errno的值不一样呢?


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


为什么两个errno的值不一样呢?
发表于:2007-08-18 20:40:57 楼主
#include   <stdio.h>
#include   <stdlib.h>
#include   <errno.h>
#include   <math.h>
int   main()
{
                double   d;
                d   =   sqrt((double)-1);
                if(errno)
                {
                                printf( "errno   =   %d\n ",errno);   //errno   =   33
                                perror( "sqrt(-1)   failed ");
                //             errno   =   0;
                }
                else
                {
                                printf( "sqrt(-1)   =   %lf\n ",d);
                }
                d   =   sqrt((double)2);
                if(errno)
                {
                                printf( "errno   =   %d\n ",errno);//errno   =   29
                                perror( "sqrt(2)   failed ");
                                errno   =   0;
                }
                else   printf( "sqrt(2)   =   %lf\n ",d);
                exit(exit_success);
}
发表于:2007-08-18 20:51:241楼 得分:0
我在windows下运行就是一样的,但是linux下就不一样了。
发表于:2007-08-18 21:11:352楼 得分:0
哪里一样以及哪里不一样?
发表于:2007-08-18 21:17:283楼 得分:0
errno的值啊
发表于:2007-08-18 21:23:094楼 得分:0
不同的平台定义错误当然不同,又不是同一家公司开发的
发表于:2007-08-18 22:07:595楼 得分:0
d   =   sqrt((double)2);   这个函数调用没有出错,errno的值是未定义的。
楼主的需要用判断sqrt是否出错出错了,然后再检查errno的值。
对sqrt函数可以用isnan判断!


快速检索

最新资讯
热门点击