【发布时间】:2016-04-27 11:34:49
【问题描述】:
我正在使用 C++ 工作,并且我(作为练习)在纸上写了 2 个答案。 第一个问题:如果我们有以下变量的声明和初始化:
unsigned char x=250, z=x+7, a='8';
表达式的值是多少?
z|(a-'0') // (here | is bitwise disjunction)
我们有无符号字符,所以数字z=x+7 减少了 256,因此,将数字写入二进制后,答案是 9。
下一个问题:a和b是int变量,a=1和b=32767。
int 的范围是[-32768, 32767]。我们这里没有无符号类型。我的问题是:a+b 的价值是多少?如果某个变量的值大于该数据类型的范围,这如何处理有符号数据类型?
【问题讨论】:
-
你认为a+b的价值是什么?
-
-32768 但我想看看这实际上是如何工作的。
-
"这里 | 是按位析取" - 是的,我们知道
-
其实只有一个问题。我解决了第一个并解释了我解决它的方式。第一个问题只是为了解释我的挣扎。
-
第一个问题和第二个问题有什么关系?我真的很困惑。
标签: c++ return-value unsigned-char