sizeof运算符的返回类型是什么?cppreference.com&msdn说sizeof返回size_t。它真的返回size_t吗?我正在使用VS2010Professional,并针对x64。intmain(){intsize=sizeof(int);//Nowarningintlength=strlen("Expo");//warningC4267:'initializing':conversionfrom'size_t'to'int',possiblelossofdatareturn0;}我有这个问题是因为第一行没有发出任何警告,而第二行却发出了警告。即使我将其更改为char
sizeof和alignof有什么区别?#include#defineSIZEOF_ALIGNOF(T)std::cout会输出1/11/12/22/24/44/44/44/44/48/88/88/8我想我不明白对齐是什么...? 最佳答案 嗯,“内存”基本上是一个巨大的字节数组。然而,像整数这样较大的东西需要超过1个字节来存储它们——例如,一个32位的值将使用4个连续字节的内存。现在,您计算机中的内存模块通常不是“字节”;它们也以“并行”的几个字节组织,例如4个字节的block。对于CPU,在读取诸如整数之类的内容时,不“跨越”此
以下代码#includeusingnamespacestd;intmain(){constchar*constfoo="f";constcharbar[]="b";cout输出sizeof(stringliteral)=2sizeof(constchar*const)=4sizeof(constchar[])=2在32位操作系统上,使用GCC编译。sizeof为什么要计算字符串字面量(所需空间)的长度?当给sizeof时,字符串文字是否具有不同的类型(来自char*或char[])? 最佳答案 sizeof("f")必须返回2,一个
来自[5.3.3/1],我发现:The sizeof operatorshallnotbeappliedtoanexpressionthathasfunctionorincompletetype来自[3.9/5]我发现:Incompletely-definedobjecttypesand cvvoid are incompletetypes无论如何,对于sizeof不评估它的操作数,我会说sizeof(void())是一个合法的表达式(实际上是GCC编译它和结果是1)。另一边,来自here,在讨论sizeof时没有提到void,既没有提到大小为1的类型,也没有在具有实现定义的列表中大小
例如此代码片段的结果取决于哪台机器:编译器机器或机器可执行文件工作?sizeof(shortint) 最佳答案 sizeof是编译时运算符。 关于c++-C++中的sizeof是在编译时还是运行时评估的?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/2615203/
我在看问题Singlequotesvs.doublequotesinCorC++.我无法完全理解给出的解释,所以我编写了一个程序:#includeintmain(){charch='a';printf("sizeof(ch):%d\n",sizeof(ch));printf("sizeof(\'a\'):%d\n",sizeof('a'));printf("sizeof(\"a\"):%d\n",sizeof("a"));printf("sizeof(char):%d\n",sizeof(char));printf("sizeof(int):%d\n",sizeof(int));ret
阅读以下标准段落:[C++11:5.3.3/6]:Theresultofsizeofandsizeof...isaconstantoftypestd::size_t.[Note:std::size_tisdefinedinthestandardheader(18.2).—endnote]现在:[C++11:18.2/6]:Thetypesize_tisanimplementation-definedunsignedintegertypethatislargeenoughtocontainthesizeinbytesofanyobject.当然,这篇文章不需要size_t是用typede
这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:sizeofint,long,etcDoesthesizeofanintdependonthecompilerand/orprocessor?Whatdecidesthesizeofaninteger?我使用的是64位机器。$uname-mx86_64$file/usr/bin/file/usr/bin/file:ELF64-bitLSBexecutable,x86-64,version1(SYSV),dynamicallylinked(usessharedlibs),forGNU/Linux2.6.32,s
我正在和我的老板争论这件事。他们说“是的,他们可以与众不同。”sizeof(T*)!=sizeof(constT*)是否可能用于类型T? 最佳答案 不,它们不可能不同。对于足够不同的T1和T2,sizeof(T1*)可以不同于sizeof(T2*),但如果T2只是constT1,那么:3.9.2Compoundtypes[basic.compound]3[...]Pointerstocv-qualifiedandcv-unqualifiedversions(3.9.3)oflayout-compatibletypesshallhav
我的一个同事问有没有unsigneddouble,我说没有,但我还是查了一下,编译到MicrosoftVisualC++2010:unsigneddoublea;doubleb;printf("size_a=%dsize_b=%d",(int)sizeof(a),(int)sizeof(b));它输出size_a=4size_b=8。即unsigneddouble为4个字节,double为8个字节。 最佳答案 unsigneddouble无效。在MSVC中也是如此。在启用警告的MSCV2010中编译上述代码时,您会得到:警告C407