xuyaqi 发表于 2022-9-12 10:07
signed char 的范围:-128-127 对于有符号数:最高位代表符号位: 0代表正数 1代表负数 。
188610329 发表于 2022-9-12 11:49
正负数,是人为划定的一个范围,你要判断正负,也是应该用if(a
vca 发表于 2022-9-13 10:33
你是从哪里得出0x80被解释为负数的结论。
注释的意思和你理解的意思真的一样吗?
这个注释就一定是对的吗 ...
censv 发表于 2022-9-12 12:16
我知道,但我说的是字面量0x80
censv 发表于 2022-9-12 21:35
你说的对,0x80就是128,永远是正数。
在例子2中,字面量0x80被解释为负数,我认为是keil bug,你觉得呢 ...
188610329 发表于 2022-9-13 17:51
t = byte & 0x80>>i;
从 这句, 以及你的结论看, 你完全没有理解 变量和常量的关系, 以及 有符号数的 ...
censv 发表于 2022-9-12 21:35
你说的对,0x80就是128,永远是正数。
在例子2中,字面量0x80被解释为负数,我认为是keil bug,你觉得呢 ...
wulin 发表于 2022-9-13 20:54
signed char a;
a = 0x80;
if (a != 0x80) led1 = 0;//这里if只判断真假,哪来的正负判断 ...
xuyaqi 发表于 2022-9-13 14:28
字面量0x80 作为 signed char 应该是 -128
censv 发表于 2022-9-13 12:03
如果我哪里不对,你可以提出来啊,不要一味指责
censv 发表于 2022-9-13 18:55
那我们再简化一下,
当shift和result变量声明为8位有符号类型
shift = 4;
188610329 发表于 2022-9-14 11:05
所以,我说你没明白,什么叫 常量, 什么叫变量. 所以我让你分步写, 有助你理解.
result = 0x80 >> shif ...
188610329 发表于 2022-9-14 11:05
所以,我说你没明白,什么叫 常量, 什么叫变量. 所以我让你分步写, 有助你理解.
result = 0x80 >> shif ...
censv 发表于 2022-9-14 12:40
关键点来了,0x80是常量不假,但也是整数。
而且关于移位运算符两个要求操作数都必须为整数,并且遵循整 ...
censv 发表于 2022-9-14 12:50
不是不分步,是我不懂你的分布是什么意思?
我以为你是嫌代码多懒得看,我只好把代码再精简一下
发表于 2022-9-14 15:35
你精简的结果已经很明显了,没有人能看懂你在说什么东西。
你要把每一步都仔细写出来,大家才能知道你 ...
188610329 发表于 2022-9-14 13:20
察看编译后的 汇编代码是 Ctrl + F5
我还是那句话, 常量是不能 做移位的,必须有个载体。
censv 发表于 2022-9-14 19:52
非常感谢,通过看了反汇编我明白了。就是keil没遵循c标准。
只是你说常量不能移位,我不认为是正确的 ...
188610329 发表于 2022-9-14 20:18
唉……,好吧,你觉得常量可以移位,就可以移位吧。
0x80 >> shift; 是不能独立成语句的。
0x80 >>= ...
188610329 发表于 2022-9-14 20:18
唉……,好吧,你觉得常量可以移位,就可以移位吧。
0x80 >> shift; 是不能独立成语句的。
0x80 >>= ...
censv 发表于 2022-9-14 22:28
常量当然有类型,字面量常量0x80永远是正的128。
咱们撇过以上分歧不谈,你认为下一行语句执行后resul ...
发表于 2022-9-14 23:04
c语言的魅力就在于贴近机器
censv 发表于 2022-9-14 22:31
0x80 >> shift; 是不能独立成语句的。
result >> shift; 也是不能独立成语句的。
188610329 发表于 2022-9-15 10:52
你确定, 这样写不会出 275 警告?
你 Ctril +F5 看过编译结果么?
你知不知道, 这两句, 压根出不了 汇编 ...
名字不是重点 发表于 2022-9-24 16:10
一瓶农夫山泉,在超市里买2块钱,同样一瓶水,同样的容量,当它在迪厅里,可是会被卖到20块钱。
场景地点 ...
人中狼 发表于 2022-9-24 21:12
怎么觉得讨论的有点偏了,0x80的十进制是什么数,首先要定义0x80的数据类型,在编程里,十六进制数和二进制 ...
zmc419 发表于 2022-9-24 21:29
看你定义,是有符合还是无符号。 signed char 与un signed char
censv 发表于 2022-9-26 15:52
那你认为0x80是什么类型?
人中狼 发表于 2022-9-26 16:08
你这个问法就真的偏了,要先定义类型,再讨论具体含义,而不是随意讨论,那样没结果的,这是很直接的因果 ...
censv 发表于 2022-9-26 18:00
那你的意思是常量没有类型?
人中狼 发表于 2022-9-26 18:58
不是常量没有类型,而是类型不分常量或变量,否则有符号数怎么和负数常量做比较
censv 发表于 2022-9-26 18:00
那你的意思是常量没有类型?
censv 发表于 2022-9-14 06:15
if当然是判断真假,a != x80,因为a表示为负数,不等于正数的字面量0x80,是对的。
但在第二个例子,0x8 ...
xxxevery 发表于 2022-9-29 17:02
楼主不是偏了,是有探究精神,但还需要多多努力学习,我们大家都是这样走过来的。对于0x80,我们回归本质在 ...
pdwdzz 发表于 2022-9-30 01:55
我送楼主个例子,相信楼主会更加坚信自己的见解,keil有bug,这么多年无人发现?
void main(void)
{
188610329 发表于 2022-9-12 11:49
正负数,是人为划定的一个范围,你要判断正负,也是应该用if(a
欢迎光临 (http://www.51hei.com/bbs/) | Powered by Discuz! X3.1 |