c语言中类型隐性转换的坑
2018-06-17 23:52:40来源:未知 阅读 ()
谨记:在C语言中,当两种不同类型之间运算时,低字节长度类型会向高自己长度类型转换,有符号会向无符号类型转换。
举例子如下:
#include <stdio.h> void func(void) { int i = 1; unsigned char c1 = 1; signed char c2 = -1; if (c2 > i){ printf("\r\n -1 > 1"); } else{ printf("\r\n -1 <= 1"); } if (c2 > c1){ printf("\r\n -1 > 1"); } else { printf("\r\n -1 <= 1"); } printf ("\n"); } int main() { func(); return 0; }
输出:
-1 <= 1
-1 <= 1
当C2与i进行比较时,由于C2是有符号8位,i是无符号32位,根据C语言的规则,c2被转换成32位,即-1的补码,故会得出-1>1的结论。
而后面一个-1<1的情况是 c2转化成无符号8位整数,即255,255, 所以大于1。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- C++ 自动转换和强制类型转换(用户自定义类类型) 2020-06-10
- SWIG 3 中文手册——11. 类型映射 2020-06-07
- Visual Studio 2019提示不能将const char*类型的值分配到con 2020-06-07
- C++ 共用体 2020-06-05
- C++ 后置返回类型 2020-05-30
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash