0
#include<stdio.h>

int main(void)
{

unsigned short int var1;
unsigned int var2;

var2 = 37000;
var1 = 36000;

if(var2 < (100 * var1))
printf("True \n");

return 0;
}

在上面的代码中当我做(100 * var1)什么的时候会发生什么?它的存储大小是多少?

4

3 回答 3

2

这是一个int. 因此,很可能是 4 个字节,具体取决于您的编译器/架构。

请记住,您实际上并没有在任何地方存储该值。

于 2013-11-05T21:56:04.753 回答
0

存储大小为sizeof (unsigned int);存储 an 所需的内存unsigned int不取决于您为其分配的值。

事实上,你没有分配任何任务。无论如何,您仍然有一个精确的内存位置sizeof(unsigned long)(无论您是否使用它:)

于 2013-11-05T21:57:02.510 回答
0

var1是一个shortunsigned不改变存储大小),通常是 2 个字节(但不保证是所有系统)。文字100int,通常是 4 个字节,但同样不能保证。short 和 int 的乘积是 int,因此它将使用 int 存储大小。100您可以通过附加“s”来强制编译器将文字解释为short:

(var1 * 100s)

或附加“我们”的无符号短:

(var1 * 100us)

但这不会改变输出的大小,因为短裤的所有操作首先都涉及到 int 的转换。

如果您想知道程序中任何内容占用了多少字节,只需使用内置函数/运算符sizeof即可找出:

sizeof(var1 * 100); //calculates size of the expression in bytes

在您的情况下,该值无论如何都是临时的,它的存储大小不应影响您的程序。

于 2013-11-05T21:58:40.133 回答