发新帖我要提问
12
返回列表
打印

一个C语言问题,大家都遇到过吧?

[复制链接]
楼主: 幸福至上
手机看帖
扫描二维码
随时随地手机跟帖
21
eydj2008| | 2015-9-15 09:03 | 只看该作者 回帖奖励 |倒序浏览
所以写一个函数 的基本思想,出错判断你没加!你还是菜鸟一枚,
至少应该 if (a > 7)   a-=7;  你这里的无符号数, 有符号数, a -= 7;  if (a < 0)  a = 0; 做为一个终结 到底最小是多少!

使用特权

评论回复
22
qhdjxy| | 2015-9-15 09:15 | 只看该作者
也要看是多少位的机器吧?8位/32位

使用特权

评论回复
23
nethopper| | 2015-9-15 10:39 | 只看该作者
unsigned char, char, WORD, DWORD, BYTE的定义一般不随机器,操作系统,编程工具改变。 int, unsigned int, long... 则会

使用特权

评论回复
24
huangqi412| | 2015-9-15 11:19 | 只看该作者
仿真………………

使用特权

评论回复
25
lizhuang_1| | 2015-9-15 13:27 | 只看该作者
跟着楼主的脚步进步啊!

使用特权

评论回复
26
幸福至上|  楼主 | 2015-9-15 15:43 | 只看该作者
huangqi412 发表于 2015-9-15 11:19
仿真………………

必须实际在片子上跑过,结果比较意外。总结是while(x) 用法没真正弄明白。当x为TRUE时,while循环执行。而x为TRUE 经过翻阅,有两种情况:1、x是一个逻辑表达式,此时逻辑表达式情况成立则为TRUE,比如while(5>1).第二种即是,x为一个数值时,只要x是一个不为0的数值,while(x)循环就会一直持续下去,而不论这个数值是有符号或无符号类型的数值。所以即便是signed char a= -5,while(a);此时这个循环依然会一直执行。这是我在MCU 51的测试结果和查阅资料所发现的,如还有错,望各位指正。借此回复,将自己对该问题的总结说一下了,希望对大家都有点借鉴....;)

使用特权

评论回复
27
ddoocc| | 2015-9-15 15:51 | 只看该作者
这相当于模运算,最好不要写这种代码。
有机会看看软件方面的书,规范自己的代码。

使用特权

评论回复
28
huangqi412| | 2015-9-17 15:32 | 只看该作者
幸福至上 发表于 2015-9-15 15:43
必须实际在片子上跑过,结果比较意外。总结是while(x) 用法没真正弄明白。当x为TRUE时,while循环执行。 ...

跑毛线,这是纯软件问题,直接软仿就明白了。

使用特权

评论回复
29
qgmfly| | 2015-9-17 16:18 | 只看该作者
这是肯定能执行到b处的,定义为无符号整型,减一个比自身大的数就直接溢出了。至于循环减9,多转几圈圈,就应该能出来了

使用特权

评论回复
30
littleshrimp| | 2015-9-24 16:31 | 只看该作者
这道题太难了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则