- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我运行的是 Windows 7(64 位)。
这个问题与此处找到的问题相同:
但更深入,因为它处理更多的数据类型并适用到 C 或 C++,而不是 C#。首先,我使用的是 Microsoft Visual Studio Ultimate 2012。不幸的是,虽然这个 IDE 支持 C# 和 Visual C++,但它不再支持普通的看起来很老的 Visual C。不管怎样,我尝试过创建以下标准 C++IDE 中的程序:
#include <cstdio>
int main(int argc, char **argv) {
printf("sizeof(short): %d\n", (int) sizeof(short));
printf("sizeof(int): %d\n", (int) sizeof(int));
printf("sizeof(long): %d\n", (int) sizeof(long));
printf("sizeof(long long): %d\n", (int) sizeof(long long));
printf("sizeof(size_t): %d\n", (int) sizeof(size_t));
printf("sizeof(void *): %d\n", (int) sizeof(void *));
printf("Hit enter to exit.\n");
char *scannedText;
scanf("%s", &scannedText);
return 0;
}
由于我找不到运行控制台应用程序的选项,我只是在“return 0;”处放置一个断点语句,以便查看输出在控制台中。结果是:
sizeof(short): %d\n", 4
sizeof(int): %d\n", 4
sizeof(long): %d\n", 4
sizeof(long long): 8
sizeof(size_t): 4
sizeof(void *): 4
Hit enter to exit.
旧的 C 教科书指出,int 设置为“字大小”,在 16 位上为 16机器上为 32,32 位机器上为 32。然而这个规则在 64 位上似乎被打破了人们期望“字长”为 64 的系统。相反,从什么我读过这些系统类似于 32 位系统,但有更好的支持64 位计算量高于 32 位计算量。因此,结果从上面的 C++ 程序得到的结果与得到的结果完全相同在 32 位系统上获取。数据类型的大小 (size_t)(可以用于测量内存中对象占用的内存量)也将其值存储在 4 个字节中,而且也很有趣的是用于访问内存位置的指针的大小(例如 sizeof(void *)显示用于存储指向内存中任何位置的通用指针的位数)也是 32 位长。
任何人都知道 Visaul C 为何从 Visual Studio 2012 中删除以及是否仍然可以从 Visual Studio 2012 运行控制台应用程序,而无需在退出之前必须设置断点或从标准输入读取文本如上所述,以便控制台窗口在关闭之前暂停?
此外,我的解释是否正确,或者我是否配置错误例如,它在 IDE 中编译为 32 位而不是 64 位系统?根据其中一位发帖者的说法,由于我的系统是 64 位,所以我应该请参阅此处描述的 size_t 和指针的结果: https://en.wikipedia.org/wiki/64-bit_computing#64-bit_data_models但我没有看到这个。有没有办法重新配置 Visual Studio这样它就可以支持 64 位内存模型,而不是我当前在程序的输出中看到?
谢谢。
最佳答案
对我来说看起来不错。在 c/c++ 中,int 没有根据位大小进行具体定义。创建项目时,您可以选择“控制台应用程序”。 VS2012 仍然支持 C,但它们大多将项目集中到 C/C++ 中。有一个编译器选项(我认为是/TC)将强制编译器符合 C 规范。默认情况下,它将通过文件扩展名暗示语言。 MS C 支持并不理想,例如它不包括 stdbool.h。
如果您想控制数据的位大小,您可以使用包含精确宽度 int 数据类型的 stdint.h。
关于c++ - C/C++ : sizeof(short), sizeof(int)、sizeof(long)、sizeof(long long) 等...在 32 位机器上与在 64 位机器上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20109984/
C# 程序: short a, b; a = 10; b = 10; a = a + b; // Error : Cannot implicitly convert type 'int' to 'sh
这个问题已经有答案了: Promotion in Java? (5 个回答) 已关闭10 年前。 我有三个短变量。当我将两个相加并将结果分配给第三个时,Eclipse 告诉我需要将其转换为 Short
我正在开展一个项目,我需要获取一系列带符号的 16 位整数、负值和正值,并将它们发送到函数以在单元测试期间进行分析。 由于不同的原因,该函数仅采用无符号 16 位整数数组,因此我需要将有符号整数存储在
这个问题在这里已经有了答案: Implicit type promotion rules (4 个答案) 关闭 3 年前。 有如下代码: short a = 5; short b = 15; sho
我有以下代码: var v = [0xFF, 0xFF]; alert((v[0]> 16); 16位左移将所有位向左移动;算术 16 位右移在移位时处理符号。 (Javascript 使用 32 位
我正在尝试尽可能多地挤出我的内存。我有一个 4.9999995e13 整数矩阵,但它们只需要为真或假 - 基本上我只需要为这些整数中的每一个存储一位。 我知道 C 中没有单个位类型(也许有人可以向我解
这个问题已经有答案了: Different between parseInt() and valueOf() in java? (11 个回答) 已关闭 5 年前。 我最近偶然发现了another q
当我将相同的值分配给有符号和无符号的 short 并进行比较时,它失败了,但它适用于 int。除非我强制转换一个或另一个使它们成为相同的类型,否则比较不起作用。 #include int main()
所以我试图解释以下输出: short int v = -12345; unsigned short uv = (unsigned short) v; printf("v = %d, uv = %u\n
当我将相同的值分配给有符号和无符号的 short 并进行比较时,它失败了,但它适用于 int。除非我强制转换一个或另一个使它们成为相同的类型,否则比较不起作用。 #include int main()
这个问题在这里已经有了答案: What is the 'short' data type in C? (1 个回答) 关闭 7 年前。 将变量声明为 short int 和 short 有什么区别?
C 中的 short int 包含 16 位,第一位表示该值是负数还是正数。我有一个 C 程序如下: int main() { short int v; unsigned short
Short.parseShort(String s, int radix) 存在,Integer.parseInt(String s, int radix) 和 Long.parseLong(Stri
我想我可以从 this question 推断出来但我不能 我当然可以 short[] shortarray = {0,1,2}; List shortList = new ArrayList();
这个问题在这里已经有了答案: char and the usual arithmetic conversion rules (5 个答案) 关闭 6 年前。 假设 int 是 16 位类型,以防止从
到目前为止我已经试过了,但我仍然在下面的代码中遇到错误: #include typedef unsigned short unichar; typedef const unichar unimap_t
unsigned short int 和 c 中的 unsigned short decleration 之间有区别吗?如果有,那是什么?我尝试在网上查找,但找不到任何有值(value)的东西。 un
我有数据库,由于与另一位开发人员混淆,我需要在一个表中更改列的值。我有一个名为 credits 的表和一个名为 credit_type 的列。 credit_type 有 2 个值 long 和 sh
我在 JNI hell 中进行类型转换: 这是一般的流程: 读取一个文件,它返回一个一维 float 组。 转换这些floats[] 到 shorts[](*4095,我想要一个12位数字) 将这些短
我正在尝试优化两个 c 样式数组的点积,这些数组的大小为 contant 和 small,类型为 short。 我已经阅读了一些关于 SIMD 内在函数的文档以及许多关于使用此内在函数进行点积优化的博
我是一名优秀的程序员,十分优秀!