求助:::Keil 5的C语言 ( int )数据类型问题!!!

2019-07-20 11:54发布

if(Delay_f == 1){Second1--;if(Second1 == 65535)Second1 = 99;}
else if(Volumn_f == 1){mL_1000--;if(mL_1000== 65535)mL_1000 = 99;}
else if(Coarse_f == 1){Speed1_1--;if(Speed1_1 == 65535)Speed1_1 = 89;}
else if(Minitrim_f == 1){Speed1_2--;if(Speed1_2 == 65535)Speed1_2 = 99;}

上面这些代码中的Second1,mL_1000,Speed1_1,Speed1_2都是定义的int(0-65535)数据类型,我需要的计数是可以从0-99计数的(包括0),之前写成if(Speed1_2 <0)Speed1_2 = 99,后来才知道KEIL的int数据类型只有0-65535,所以改成if(Speed1_2 == 65535)Speed1_2 = 99;但是改成这样之后,每次数据减下去,5,4,3,2,1,0,95,94,93,92.......;这样的话我这条语句Speed1_2 = 99;是不是没有起作用了,还是其他问题?

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
hgqlyl
1楼-- · 2019-07-20 12:49
 精彩回答 2  元偷偷看……
ZZBEAM
2楼-- · 2019-07-20 15:33
上面的问题,不仅仅是Speed1_2有这个问题;Second1,mL_1000,Speed1_1等,还有好几个int数据类的数也是这样的
ZZBEAM
3楼-- · 2019-07-20 19:00
 精彩回答 2  元偷偷看……
ZZBEAM
4楼-- · 2019-07-20 23:14
hgqlyl 发表于 2017-9-14 11:39
1、int 型,也就是signed int型,在32bit芯片里是-2^31-(2^31-1);
2、你说的应该是signed short型,范围 ...

谢谢你!
1、我写103代码,用KEIL 5 ,定义数据类型的时候,就是int ,比如int Speed1_2;
2、之前写成if(Speed1_2 <0)Speed1_2 = 99,Speed1_2减到0之后,再减就变成了95.....
3、可能是我没很清楚32bit芯片的int,signed int,signed short吧,我再好好看看。
非常感谢你的回答!!!!!!!!!!!!!
hgqlyl
5楼-- · 2019-07-21 04:09
ZZBEAM 发表于 2017-9-14 12:56
谢谢你!
1、我写103代码,用KEIL 5 ,定义数据类型的时候,就是int ,比如int Speed1_2;
2、之前写成 ...

你这个突然间变成95肯定有问题,肯定是在哪里设置,或者多次执行了减减操作,你是在哪里看的?认真查一下代码。这个跟编译器肯定没有关系。
正点原子
6楼-- · 2019-07-21 05:10
 精彩回答 2  元偷偷看……

一周热门 更多>