【发布时间】:2013-10-14 13:44:17
【问题描述】:
我遇到了我不理解的行为。 我想要有趣的返回一个 2 字节的值。 我创建了一个 4 字节的 var 来进行一些处理并返回变量。 我的假设是变量被隐式转换为short。 但是,返回值似乎不是 2 字节,因为 printf fun 打印的值大于 2^16,除非我在 fun() 之前放置(短)。 这是为什么呢?
short fun()
{
long var = 2<<20;
return var;
}
printf("%i", fun());
【问题讨论】:
-
参见:stackoverflow.com/questions/1255775/… 这个故事的寓意是,如果默认行为不是你想要的,就不要依赖它。
-
另外,
var未初始化... -
您的代码首先返回一个未初始化的值。
-
这是一个例子,只是为了说明问题......
-
该代码只是我的代码中的一个示例,它已被初始化,问题是它不是零扩展或从 fun 返回时未转换为短。