gpt4 book ai didi

c++ - sizeof 运算符的返回类型是什么?

转载 作者:IT老高 更新时间:2023-10-28 12:31:17 24 4
gpt4 key购买 nike

sizeof 运算符的返回类型是什么? cppreference.com & msdn 说 sizeof 返回 size_t。它真的返回 size_t 吗?我正在使用 VS2010 Professional,并针对 x64。

int main()
{
int size = sizeof(int); // No warning
int length = strlen("Expo"); //warning C4267: 'initializing' : conversion from 'size_t' to 'int', possible loss of data
return 0;
}

我有这个问题是因为第一行没有发出任何警告,而第二行却发出了警告。即使我将其更改为 char 大小,我也不会收到任何警告。

最佳答案

C++11,§5.3.3 ¶6

The result of sizeof and sizeof... is a constant of type std::size_t. [ Note: std::size_t is defined in the standard header (18.2). — end note ]

您也可以快速检查:

#include <iostream>
#include <typeinfo>
#include <cstdlib>

int main()
{
std::cout<<(typeid(sizeof(int))==typeid(std::size_t))<<std::endl;
return 0;
}

在我的机器上正确输出 1

正如 @Adam D. Ruppe 在评论中所说,编译器可能不会提示,因为它已经知道结果,它知道这种“转换”并不危险

关于c++ - sizeof 运算符的返回类型是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19870192/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com