社区
C语言
帖子详情
加与不加\n的结果
pp25210
2011-01-25 02:37:21
#include<stdio.h>
int main(void)
{
char i=201;
printf("%c",i);
return 0;
}
输出结果
加了‘\n’之后
...全文
307
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'就是换行符
Nreal MR眼镜快速开发教程
使用Unity快速开发一个音视频通讯Demo,详细介绍创建Nreal的项目、安装、设置、调试的流程。
为什么RSA公钥每次
加
密得到的结果都不一样?
《OpenSSL和Python实现RSA Key公钥
加
密私钥解密》中提到,发现使用RSA公钥对同一数据
加
密,每次的结果都不一样。百度一下,很多人都有这个疑问,但并没有看到详细的分析解答,即使有人说是因为padding填充的原因,也...
scanf
加
不
加
\n?
关于scanf小括号中
加
不
加
\n的区别 例程序如下所示: 第一个程序: 1 int main(){ 2 int coding = 0; 3 printf("你会去敲代码吗?(选择1 or 0):>"); 4 scanf_s("%d", &coding)...
1的平方
加
2的平方一直
加
到n的平方
今天写一个算法题要计算某一表达式运行次数,一下子忘记了1的平方
加
2的平方一直
加
到n的平方的计算公式了,决定自己推导一下,于是发现可以有如下思路,记录如下: Sn = 12 + 22 + 32 + …… + n2,求Sn 对Sn求导,...
计算1
加
到n的结果
#include&.../* 计算1
加
到n的结果 */ /* written by Chen Gengru */ /* updated on 2018-11-1 */ int main() { int i, iN, iTotal; i = 1; iTotal = 0; printf("请输入n\n"); s...
C语言
69,382
社区成员
243,073
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章