百科问答小站 logo
百科问答小站 font logo



c语言0xFFFF换成十进制不应该是65535吗? 第1页

  

user avatar   pansz 网友的相关建议: 
      

这种就属于比较无聊的问题了,但凡题主真的编译一下,哪怕不运行,都应该知道发生了什么:

       $ make 2 cc     2.c   -o 2 2.c: In function ‘main’: 2.c:4:12: warning: overflow in conversion from ‘int’ to ‘char’ changes value from ‘65535’ to ‘-1’ [-Woverflow]     4 |     char x=0xffff; printf("%d
", x--);       |     

以上 是 gcc 9.3.0 的编译结果。

编译器非常明确的告诉你 65535 赋值给 char 的时候因为溢出,被强制转化为 -1。

然后本题的结果是 -1。

当然,在其它平台下可能有其它答案,这里我只是说在普通的平台下一个最普通的答案。


另外给一个小彩蛋:Linux下任何单独的 .c 文件,只要使用 make 文件名(不带扩展名)就可以编译了,不需要写 Makefile。系统自带的编译方法,解决简易文件编译的好方法。如果需要设参数可以直接设定到环境变量。




  

相关话题

  字符串转化成整数,为啥我觉得我写的没有毛病呢? 
  在手机上C语言编译器运行while(system(“pause”))为什么会导致手机重启? 
  为什么很多程序员不用switch,而是大量的if……else if? 
  对于学习代码困难的人来说,应该如何学习代码比较合适? 
  既然scanf和strcpy等函数会被编译器报不安全,那么C语言教材为什么还讲这些函数? 
  网上有对于C++编程要避免使用cin、cout、fstream;而是使用scanf、printf、FILE *的说法, 请问是正确的吗? 
  怎么看待 公办学院使用的部分c语言书籍存在 描述 main不可被其他函数调用但是实际操作 可以? 
  进入内核态究竟是什么意思? 
  程序员们平时都喜欢逛什么论坛呢? 
  完成了c语言程序设计初步学习,大概了解了数据类型,循环,判断,数组,函数和指针。接下来该学什么(书)? 

前一个讨论
2021 Google 开发者大会再度发力,今年有哪些赋能全球的新动态值得关注?
下一个讨论
现在是不是只要是个人就能成为程序员?





© 2025-05-14 - tinynew.org. All Rights Reserved.
© 2025-05-14 - tinynew.org. 保留所有权利