作者:PHP小白 | 来源:互联网 | 2023-09-11 19:53
1、请问头文件中的#error是什么意思,它起什么作用呢?2、请问如下代码输出是什么?为什么呢?char*p;if((p(char*)malloc(0))NULL)cou
1、请问头文件中的#error是什么意思,它起什么作用呢?
2、请问如下代码输出是什么?为什么呢?
char *p;
if((p=(char *)malloc(0))==NULL)
cout<<'1'<
else cout<<'2'< 3、请问好下代码的输出是什么?为什么?
unsignd int a=6;
int b=-20;
int c;
c=(a+b>5)?1:2;
cout<
14 个解决方案
1, #error 用于在编译时输出错误信息,下面是MSDN上的例子,看一下就明白了:
#if DEBUG
...
#elif RETAIL
...
#else
#error DEBUG or RETAIL must be defined!
#endif
When the error above is encountered, the following line will be output:
#error 'DEBUG or RETAIL must be defined' (J0500)
2, 结果为2, 因为 p 是 char * 类型, malloc 成功后自然会有一个地址值给它.
3, 结果为1, 因为 a 是无符号类型,故 a+b 也是无符号类型(a 在前面),故结果为 1.
1、请问头文件中的#error是什么意思,它起什么作用呢?
停止编译,编译器显示错误信息 一般是避免编译选项选错了
2、请问如下代码输出是什么?为什么呢?
char *p;
if((p=(char *)malloc(0))==NULL)
cout < <'1' < else cout < <'2' <
2
3、请问好下代码的输出是什么?为什么?
unsignd int a=6;
int b=-20;
int c;
c=(a+b> 5)?1:2;
cout <
1 转成unsigned了
1、Error directives produce compiler-time error messages.
2、输出2.
If size is 0, malloc allocates a zero-length item in the heap and returns a valid pointer to that item.
3、a+b的结果-14,将int c = -14;发生类型提升,int默认是无符号的,所以c>5,输出1
1. #error作用是在编译的时候输出编译错误信息,从方便程序员检查程序中出现的错误。
2. ANSI/ISO 标准声中说malloc(0)可能返回返回一个空指针或者指向0字节的指针; 其行为由实现定义。
gcc 4.1测试结果是返回指向0字节的指针, 非null.
3. 当表达式中存在有符号类型和无符号类型时, 所有的操作数都自动转换为无符号类型。
unsignd int a=6;
int b=-20;
int c;
c=(a+b> 5)?1:2;
对于a+b, b=-20转换成一个超大的正整数, 其结果是肯定>5的, 但是a+b的具体值还和操作系统有关(32位,64位).
1、请问头文件中的#error是什么意思,它起什么作用呢?
编译时输出错误,例如:
#if !defined(__cplusplus)
#error C++ compiler required.
#endif
2、请问如下代码输出是什么?为什么呢?
char *p;
if((p=(char *)malloc(0))==NULL)
cout < <'1' < else cout < <'2' < malloc(0)也会返回一个非NULL指针,因为即使你只想分配0个字节的空间,但是编译器实际上还是会在堆栈上分配一些附加信息,呵呵,这个问题刚刚在我的那个帖子里讨论过。
3、请问好下代码的输出是什么?为什么?
unsignd int a=6;
int b=-20;
int c;
c=(a+b> 5)?1:2;
cout < 无符号数和有符号数运算,转化为无符号数