1.char变为int时高位符号扩展问题

int main()
{
char a = 0x9a;
int util;
util = (int)a;
if(util > 0)
printf("positive\n");
else
printf("negative\n"); return 0;
}

0x9a --- 1001 1010
但是强制转换的过程中,int是有符号的,需要对0x9a进行符号扩展,也就是用最高位1来扩展其他3个字节(架设int为4个字节)就会变成
1111111 11111111 11111111 10011010
(8为二进制数中最高位为符号位 默认就是1为负)所以上数是二进制补码表示的-102

将 util = (int)a 修改为 util = (int)(unsigned char)a
即可!!

 

2.int转为char时的数据流失

int main()
{
char c;
while(c=getchar())!=EOF)
putchar(c);
return 0;
}

各种系统都有自己默认的char类型,可能是unsigned char也可能是signed char.假设此处默认是unsigned char。

  getchar()返回一个int型,将被强制转换成unsigned char赋给c,这样当getchar读取完毕返回EOF (-1)的时候,转换成unsigned char 后的ASCII的值是255。 然后,系统在比较c(unsigned char)和EOF 时,均被转换为 unsigned int 来比较。前者是 (unsigned int)255 后者是(unsigned int )-1 ,但是8位的-1 和32 位的 -1差距却很大,永远不会相等,因此造成死循环!!

应该改成-->>

int main()
{
int c;
while(c=getchar())!=EOF)
putchar(c);
return 0;
}

  

char与 int 类型转化问题汇总的更多相关文章

  1. char,String,int类型互转

    1.ascci码对应转换 字符,对应的ascii(其实是UTF-16)码:     char c='a'; int k=(int) c;    结果k=97 数字,对应的字符:     int k=9 ...

  2. getchar返回int类型

    #include <stdio.h> /* copy input to output; 2nd version */main(){int c;c = getchar();while(c ! ...

  3. 17.3.10--关于C元的变量类型所占字节问题和类型转化

    在C语言并没有对于严格规定short,int  long所占字节,只是做了宽泛要求:short:至少连个字节 int建议为一个机器字长,32位环境下机器字长是4个字节,64位环境机器字长是8个字节 s ...

  4. Java中byte、short、char、int、long运算时自动类型转化问题

    -------------------------------------------------------------------------------------------------- ★ ...

  5. char 数组和 int 之间转化

    上周工作结束,来到斯凯网络也将近半个月来. 没有新人的感念,最多的是将自己当作一个战士. 废话不多说,直接入正题,在没有仔细考虑问题之前我们总会 觉得:这尼玛的有毛线难度啊,不就是一个 int 转为c ...

  6. (C语言)char类型与int类型相加

    #include <stdio.h> int main(void) { ; ; int c = a + b; a += b; printf("c=%d",c); //p ...

  7. c++中char类型字符串拼接以及int类型转换为char类型 && 创建文件夹

    如下所示: #include <iostream> #include <windows.h> #include <cstring> using namespace ...

  8. int类型与char类型的转换

    ---------siwuxie095                 Java对char类型的数据在底层是按int类型来处理的 (只是显示出来仍然是字符型)         1.int类型与char ...

  9. Java JNA (四)—— void**、void*、char**、char*、int*等类型映射关系及简单示例

    ByReference类有很多子类,这些类都非常有用. ByteByReference.DoubleByReference.FloatByReference. IntByReference.LongB ...

随机推荐

  1. Flex 仿Winxp左侧菜单

    呆毛放出,源码暂时不能公布,一直比较喜欢winxp的左侧菜单样式,以前也用xslt实现过,但总是达不到完美,没想到FLex轻松做到了这一点,几乎和winxp一模一样.

  2. IOS9以上如何导入铃声并设置

    1.打开iTunes,点击左侧的“音乐” .2.在右侧的MP3等音乐列表中选中一个要制作铃声的名字 .3.在这个名字上点击鼠标右键选择“显示简介”,在弹出窗口中选择“选项”.4.在选项标签栏中设定开始 ...

  3. 解决visual studio已安装的问题

    使用Windows Install Clean Up(用管理员身份打开),找到相应的软件

  4. CSS垂直水平居中方法整理

    CSS定位中常常用到垂直居中,比如覆盖层上的弹框. 兼容性比较好的方法: <!DOCTYPE html PUBliC "-//W3C//DTD XHTML 1.0 Transition ...

  5. [设计模式 3] 用设计模式的眼光看MVC框架

    导读:之前一直在区分MVC和设计模式的区别,但是,既然有些人认为MVC是一种设计模式,那么它们之间肯定是有共通之处的.所以,本篇博客,就用设计模式的眼光来看MVC框架.仅是本人对于MVC的粗鄙看法,还 ...

  6. PAT1013

    #include<cstdio>#include<cstring>#include<vector>using namespace std;const int max ...

  7. HTML中解决双击会选中文本的问题

    HTML中解决双击会选中文本的问题 <div unselectable="on" style="-moz-user-select:none;" onsel ...

  8. SQL笔记 [长期更新] (-2013.7)

    --IF EXISTS(SELECT * FROM dbo.SysObjects WHERE ID = object_id(N'[TABLEA]') ) DROP TABLE tableA--CREA ...

  9. Android IOS WebRTC 音视频开发总结(三五)-- chatroulette介绍

    本文主要从技术角度介绍chatroulette,文章来自博客园RTC.Blacker,支持原创,转载请说明出处. 很多人不知道或没用过chatroulette,下面先来张界面截图让大家有个整体了解: ...

  10. 【EF学习笔记04】----------EF简单增删改查

    第一步:创建上下文对象 using(var db = new Entities()) { //数据操作 } 新增 UserInfo user = new UserInfo() { UserName = ...