标题: C语言定义一个变量uchar unsigned=i;怎么实现i++ i-- [打印本页]

作者: 无限飞翔    时间: 2021-6-12 10:39
标题: C语言定义一个变量uchar unsigned=i;怎么实现i++ i--
定义一个变量uchar unsigned=i;怎么实现i++  i--,都的0-50变化,++还好办,大于50,等于0,就是--,小于0,变量i就溢出了,不知道 跑到哪里去了,这样的情况怎么搞呢?

作者: xuyaqi    时间: 2021-6-12 16:14
把 i 不要设置为无符号uchar,设置成有符号char,或者 int。
作者: 无限飞翔    时间: 2021-6-12 16:31
xuyaqi 发表于 2021-6-12 16:14
把 i 不要设置为无符号uchar,设置成有符号char,或者 int。

懵圈啦!
一直认为cahr是两个字节,变量较比,我是为了省空间都设成了ucahr变量。
作者: 黄youhui    时间: 2021-6-12 16:57
unsigned这是一个关键字,你unsigned = i是什么操作
作者: 无限飞翔    时间: 2021-6-12 17:26
黄youhui 发表于 2021-6-12 16:57
unsigned这是一个关键字,你unsigned = i是什么操作

这是我贴错了,应该是
#define uchar unsigned char
uchar i;
作者: wulin    时间: 2021-6-13 08:30
//采用不同数据类型代码写法不同

        unsigned char i;

        if(++i>50)i=0;

        if(--i>50)i=50;//当i=0时再减1等于255
/***********************/
        char i;

        if(++i>50)i=0;

        if(--i<0)i=50;
作者: 无限飞翔    时间: 2021-6-15 21:26
wulin 发表于 2021-6-13 08:30
//采用不同数据类型代码写法不同

        unsigned char i;

明白了,就是这么简单!
作者: 无限飞翔    时间: 2021-6-16 09:07
wulin 发表于 2021-6-13 08:30
//采用不同数据类型代码写法不同

        unsigned char i;

char i;

        if(++i>50)i=0;

        if(--i<0)i=50;
按个改,执行i++没有问题,
i--就有点间题了,5,4,3, 2, 1, 0, /, 50
中间加了个  /  这个啥情况?
作者: sustlixin    时间: 2021-6-16 15:29
无限飞翔 发表于 2021-6-16 09:07
char i;

        if(++i>50)i=0;

i++/++i , i--/--i,这两个的运算处理过程不一样的,一个是先判定后运算,一个是先运算后判定,所以,我觉得,开始出现的溢出,或者不正常的显示,都是因为对运算符前置与后置的理解误差导致。
作者: 无限飞翔    时间: 2021-6-17 18:07
搞定




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1