求助两个C语言的问题
本帖最后由 lvpeng-1619958 于 2018-7-25 09:47 编辑1:
uint8_t a = 1,c;int8_t b = -1;c= a/b,结果是c = ?是多少啊?2:uint8_t a = 0xff;uint8_t b = 0;if((~a) == b){return 1;}else{return 0}在32bit系统当中,到底是return 1还是return 0?
第一题报错大写C未定义
第二题 异或后 是FF 不等于0 所以返回0 本帖最后由 toofree 于 2018-7-24 17:59 编辑
跑个程序就可以了呀,在这纠结?
可能不同的编译器,会有不同的结果吧,我这是GCC
toofree 发表于 2018-7-24 17:57
跑个程序就可以了呀,在这纠结?
可能不同的编译器,会有不同的结果吧,我这是GCC
看样子,你用的是CodeBlocks? 本帖最后由 stm1024 于 2018-7-24 18:39 编辑
第二个问题,应该是0。C语言中,所有的比较运算符,操作数都是使用的int型(或指针类型),其他类型会有隐含类型转换的操作if((~a)==(-256))
printf("Equal\n");
else
printf("Not Equal\n");
uint32_t c=4294967040;
if((~a)==c)
printf("Equal\n");
else
printf("Not Equal\n");上面这两段代码,都会显示Equal,因为最终转化为32位int的时候,都是0xffffff00。
本帖最后由 wenyangzeng 于 2018-7-24 21:17 编辑
楼主写代码应该严谨一点:C不等于c呀!
退一步,改c为C,
则:
uint8_t a = 1,C;
这里的a和C是无符号,而b是负数:
则C= a/b,商是负数,uint8_t C肯定溢出!!
stm1024 发表于 2018-7-24 18:17
看样子,你用的是CodeBlocks?
是滴,CodeBlocks超级方便 toofree 发表于 2018-7-24 22:10
是滴,CodeBlocks超级方便
用这个来构建STM32的开发环境吗? 本帖最后由 toofree 于 2018-7-25 01:07 编辑
select326 发表于 2018-7-25 00:06
用这个来构建STM32的开发环境吗?
不是用来开发STM32,单纯验证C
因为楼主的问题是C
TC、WinTC、VC6.0、CodeBlocks,基本都是用来写个小程序,验证点算法,转换点文件。
toofree 发表于 2018-7-25 01:05
不是用来开发STM32,单纯验证C
因为楼主的问题是C
TC、WinTC、VC6.0、CodeBlocks,基本都是用来写个小程序 ...
求跨平台,STM32开发环境构建方案官方的SW4STM32 实在不好用呀
页:
[1]
2