相关疑难解决方法(0)

C++标准规定了int的大小,long类型是什么?

我正在寻找有关基本C++类型大小的详细信息.我知道这取决于架构(16位,32位,64位)和编译器.

但是有没有C++的标准?

我在32位架构上使用Visual Studio 2008.这是我得到的:

char  : 1 byte
short : 2 bytes
int   : 4 bytes
long  : 4 bytes
float : 4 bytes
double: 8 bytes
Run Code Online (Sandbox Code Playgroud)

我试图找到,但没有成功,可靠的信息,表述的大小char,short,int,long,double,float(和其他类型的我没想到的),在不同的体系结构和编译器.

c++ c++-faq

679
推荐指数
15
解决办法
120万
查看次数

与各种64位数据模型相比,32位的sizeof(size_t)是多少?

在64位系统上,sizeof(unsigned long)取决于系统实现的数据模型,例如,它在LLP64(Windows)上为4个字节,在LP64(Linux等)上为8个字节.什么是sizeof(size_t)应该是什么?它是否随数据模型而变化sizeof(long)?如果是这样,怎么样?


参考文献:

维基百科上的64位数据模型

c 64-bit sizeof size-t

45
推荐指数
4
解决办法
12万
查看次数

C++是否支持可变长度数组?

不,等等,忍受我...

VLA一直是GCC扩展,但它们被C99采用:

[C99: 6.7.5.2/4]:如果大小不存在,则数组类型是不完整类型.如果大小是*而不是表达式,则数组类型是未指定大小的可变长度数组类型,只能在具有函数原型范围的声明中使用; 尽管如此,这些数组仍然是完整类型.如果size是一个整型常量表达式,并且元素类型具有已知的常量大小, 则数组类型不是可变长度数组类型; 否则,数组类型是可变长度数组类型.

C99也称为ISO/IEC 9899:1999.

现在:

[C++11: 1.1/2]: C++是基于ISO/IEC 9899:1999(以下称为C标准)中规定的C编程语言的通用编程语言.除了C提供的功能之外,C++还提供其他数据类型,类,模板,异常,命名空间,运算符重载,函数名称重载,引用,免费存储管理操作符和其他库设施.

那么C++ 11也不应该有VLA吗?

c++ variable-length-array c++11

33
推荐指数
3
解决办法
2万
查看次数

如何编写适用于32位和64位的std :: bitset模板

请考虑以下代码

template<unsigned int N> void foo(std::bitset<N> bs)
{ /* whatever */ }

int main()
{
    bitset<8> bar;
    foo(bar);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

g ++在64位上抱怨这个,因为<8>被解释为unsigned long int,它与模板不完全匹配.如果我将模板更改为unsigned long int,那么32位编译会抱怨.

显然,解决这个问题的一种方法是将bitset <8>更改为bitset <8ul>,但有没有办法重新编写模板部分,以便它可以使用数字文字的默认解释?

c++ 64-bit templates bitsets

8
推荐指数
1
解决办法
5067
查看次数

“uintmax_t”到“size_t”和“unsigned int”转换中的数据丢失是多少?

我明白了:

\n\n
\n

警告 C4244:“初始化”:从“uintmax_t”转换为“unsigned int”,可能会丢失数据

\n
\n\n

在:

\n\n
boost::shared_array<char> buffer( new char[file->size]);\n
Run Code Online (Sandbox Code Playgroud)\n\n

\xe2\x80\xa6 然后是这个:

\n\n
\n

警告 C4244:“argument”:从“uintmax_t”转换为“size_t”,可能会丢失数据

\n
\n\n

在:

\n\n
boost::asio::write(*socket, boost::asio::buffer(buffer.get(), file->size));\n
Run Code Online (Sandbox Code Playgroud)\n\n

我会害怕还是没关系?

\n

c++ int boost

5
推荐指数
3
解决办法
6208
查看次数

标签 统计

c++ ×4

64-bit ×2

bitsets ×1

boost ×1

c ×1

c++-faq ×1

c++11 ×1

int ×1

size-t ×1

sizeof ×1

templates ×1

variable-length-array ×1