在这种情况下,sizeof(int) 返回什么
What does sizeof(int) return in this case?
#include<stdio.h>
#include<conio.h>
void main()
{
if(sizeof(int)>=-2)
printf("True");
else
printf("False");
}
当我尝试使用 Turbo 编译这段代码时C++它返回 False 而不是 True .但是当我尝试打印 int 的值时,程序返回 2。
这怎么可能? 而sizeof(int)
返回 2 和是 2>=-2 .
sizeof(int)
被替换为在大多数实现中未签名的类型 std::size_t
。
将签名与未签名进行比较会导致奇怪的结果,因为签名被提升为无签名。
您可以获得合理的结果,如下所示
if(static_cast<int>(sizeof(int)) >= -2)
如果您正在使用C
编译器
if((int)sizeof(int) >= -2)
例如,使用一些警告标志编译代码-Wall
最有可能警告有符号/无符号比较。(如果您没有忽略警告(
sizeof
的类型是size_t
(typedef unsigned int size_t
(。 unsigned int
与签名相比可能会导致错误的答案。
相关文章:
- 查找不存在的键时,unordered_map返回什么
- 如果我在 const 函数上使用指针,我可以返回什么?
- 使用枚举作为条件,if 条件将返回什么,真或假?
- 我应该返回什么而不是标准::shared_ptr<>&?
- 当你只使用 return 时,函数返回什么类型;在 c++ 中
- 在C++中,运算符 sizeof 返回什么数据类型?
- ActorItr 迭代器变量中有什么,* ActorItr 返回什么?
- mxGetPr 返回什么?
- 重载运算符返回什么类型的值(对于用户定义的类型):右值还是左值?
- 代码是否有效.如果我想显示第一个元素?如果不是,那么 s.begin() 会返回什么?
- 范围分辨率运算符在类型:: var的情况下返回什么
- fork_rv返回什么
- int* foo(int a)在C 中返回什么
- 当找不到请求的注册表值时,ReggetValue会返回什么
- 我们应该在带有 char *func(char *string) 的函数中返回什么?需要简要说明这与 c 中的 char
- 重载的 QAbstractItemModel::flags 应该为无效的 QModelIndex 返回什么
- 试图在每次输出后使用一个函数摆脱'0',但不确定我可以返回什么
- 查找函数在失败结果中应该返回什么
- 当c 中的矢量容器过载[]运算符时,我对未定义的索引返回什么
- 新运营商在组装中返回什么