社区
C语言
帖子详情
加与不加\n的结果
pp25210
2011-01-25 02:37:21
#include<stdio.h>
int main(void)
{
char i=201;
printf("%c",i);
return 0;
}
输出结果
加了‘\n’之后
...全文
441
19
打赏
收藏
加与不加\n的结果
#include int main(void) { char i=201; printf("%c",i); return 0; } 输出结果 加了‘\n’之后
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
19 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wopabe
2011-01-26
打赏
举报
回复
LZ,看不到图片
appx
2011-01-26
打赏
举报
回复
对于
char a = 201;
printf("%c",i);
的输出结果,不好确定,因为这个首先取决于你的环境对char型的定义,对于定义为无符号型和有符号型是完全不同的。然后就是对于这两种情况下要看环境对ASCII编码外的字符采取的处理方式,机子会对其采取随机的一种方式处理,当然这里的随机性还与系统资源的使用状况有关,至少我现在的机子就是这样。
Barbiegirl2010
2011-01-26
打赏
举报
回复
图片怎么看不到啊
qiunengjun
2011-01-26
打赏
举报
回复
图片看不到
wizard_tiger
2011-01-26
打赏
举报
回复
[Quote=引用 6 楼 snowwhite1 的回复:]
LZ最好不要这样定义字符,对于char型而言,其表示范围为-128~127,对于unsigned char,表示范围为0~255.一般对字符进行赋值,最好在0~127之间,这样程序具有可移植性。向LZ这样赋值,需要进行转化,并且0~127之外的字符各国并不是完全相同的,经常会出问题。
如果确实要赋值,最好类型改为unsigned char。
[/Quote]
要是赋值的话,这个说的很清楚了。
楼主,图片看不到。
AnYidan
2011-01-26
打赏
举报
回复
ansi c 中规定用的为缺省字符集合是ASCII再加上EOF,下标值从0到127,当仅用字符集合时:
指针 = 缺省字符集合指针 + 1
mtj520
2011-01-26
打赏
举报
回复
[Quote=引用 11 楼 bokutake 的回复:]
如果在纯DOS下,128-255里会有很多有的字符,各种欧洲语言的特殊字母、制表符和一些深浅方框以及数学符号等等。不过问题在于这部分字符和不同的代码页有密切关系,中国用的是和美国一样的Latin-1,但是瑞士、日本等国家就完全不同了。
[/Quote]
+1
辰岡墨竹
2011-01-25
打赏
举报
回复
如果在纯DOS下,128-255里会有很多有的字符,各种欧洲语言的特殊字母、制表符和一些深浅方框以及数学符号等等。不过问题在于这部分字符和不同的代码页有密切关系,中国用的是和美国一样的Latin-1,但是瑞士、日本等国家就完全不同了。
辰岡墨竹
2011-01-25
打赏
举报
回复
是这样的,在中文GBK字符集里,汉字可以有两个字节表示。高字节范围是0×81-0xFE,低字节范围是0x40-7E和0x80-0xFE。比较新的GB18030(现在一般系统都支持),汉字可以有1、2或4个字节。其中双字节和GBK都是相同的。在Windows环境下,一般的代码页(CP936)都没有128~255的字符,会打印问号或者方框代替。但是如果你连续输出的话,因为第二个字节不是回车符,所以可能有的正好组成一个双字节GBK编码,系统就按GBK来解释,于是会显示一堆乱码。
char具体范围因编译器不同而不同,VC是unsigned的。
风中追梦郎
2011-01-25
打赏
举报
回复
图片没有看到哦。
fresh_han
2011-01-25
打赏
举报
回复
楼上有说啊 char的取值范围才是-128~127 如果你取值大于127 就有溢出,应该就是另一个负值了,所以输出肯定不会是你想的了。128赋值给char型的应该就是-128,129就是-1。。。。
[Quote=引用 7 楼 qq252101792 的回复:]
引用楼主 qq252101792 的回复:
#include<stdio.h>
int main(void)
{
char i=201;
printf("%c\n",i);
return 0;
}
输出结果
加了‘\n’之后
我刚刚又调试了下,出现了以下2种情况,还望大家解惑:
1.当给 i 赋大于128的值时输出的全是 ?
2.当printf()语句改为pri……
[/Quote]
pp25210
2011-01-25
打赏
举报
回复
[Quote=引用楼主 qq252101792 的回复:]
#include<stdio.h>
int main(void)
{
char i=201;
printf("%c\n",i);
return 0;
}
输出结果
加了‘\n’之后
[/Quote]
我刚刚又调试了下,出现了以下2种情况,还望大家解惑:
1.当给 i 赋大于128的值时输出的全是 ?
2.当printf()语句改为printf("%c",i); i 值大于128是输出的全是垃圾值。
flysnowhite
2011-01-25
打赏
举报
回复
LZ最好不要这样定义字符,对于char型而言,其表示范围为-128~127,对于unsigned char,表示范围为0~255.一般对字符进行赋值,最好在0~127之间,这样程序具有可移植性。向LZ这样赋值,需要进行转化,并且0~127之外的字符各国并不是完全相同的,经常会出问题。
如果确实要赋值,最好类型改为unsigned char。
kevinxin24
2011-01-25
打赏
举报
回复
201是不可见字符
greyillusion
2011-01-25
打赏
举报
回复
201是个什么字符啊
漫步者、
2011-01-25
打赏
举报
回复
\n会被放入输入队列中。
LZ,你的图片看不到。
justkk
2011-01-25
打赏
举报
回复
ASCII码201本身就不是一个可见字符
如果没有\n,那么这个字符与命令行提示符连在一起,可能显示一个随机的汉子
如果\n,这个字符本身是不可见的
bdmh
2011-01-25
打赏
举报
回复
看不到图片,'\n'就是换行符
C语言程序设计第四版 苏小红 习题4 4.2
博主因在CSDN找答案时发现很多错误,于是自行整理C语言代码。代码中涉及long型和float型变量的输入,指出scanf输入long型时
加
不
加
\n不影响结果,而输入float型时一定不能
加
\n,否则需额外操作才能得到正确结果。
scanf
加
不
加
\n?
本文详细解析了在Visual Studio 2013环境下,使用scanf函数时,小括号内是否添
加
对程序运行的影响。通过两个示例程序对比,阐述了
加
与
不
加
的区别,及如何正确处理输入流。
java中\r,\n,\r\n,\n\r的区别
本文详细解析了Java中, , , 的使用区别,通过实例演示了不同换行符的效果,并针对Windows系统下回车键对应的换行符进行了测试。此外,还讨论了在Java中写入文件时,应选择/r/n还是/n作为换行符。
C语言中 \r, \n, \b
本文详细介绍了C语言中常用的转义字符\n(换行)、\r(回车)和\b(退格)的含义与使用方法,包括其ASCII码值、光标行为及在不同操作系统中的表现差异,特别说明了Windows与Unix系统的换行符区别及其在文本和二进制模式下的处理方式。
C语言
70,038
社区成员
243,247
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章