char型可以用%d输出,而int型数据不能用%c输出??

 我来答
四舍五不入6
高粉答主

2020-01-31 · 醉心答题,欢迎关注
知道答主
回答量:147
采纳率:100%
帮助的人:2.1万
展开全部

int型数据超过[0,127]这个范围就不能用%c输出。

当一个int型数据在[0,127]这个范围内,它不一定能用%c输出。

ASCII 表上的数字 0–31 分配给了控制字符,用于控制像打印机等一些外围设备,是不可打印的 意思就是不可输出。

扩展资料:

在C中,char型是一字节整型,int是四字节(早期的是二字节)整型,它们是可以通用的,甚至一些C的库函数如getc、getchar等在接收键盘输入的字符时返回的就是int型值而并非char型值。char型在%d控制下按int型输出时符号位将被扩展至总长度为四字节,而int型在%c控制下按char型输出时,将从低位截取一字节而放弃前三个字节。

参考资料来源:百度百科-INT

White_MouseYBZ
2017-07-06 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6461万
展开全部

在C中,char型是一字节整型,int是四字节(早期的是二字节)整型,它们是可以通用的,甚至一些C的库函数如getc、getchar等在接收键盘输入的字符时返回的就是int型值而并非char型值。char型在%d控制下按int型输出时符号位将被扩展至总长度为四字节,而int型在%c控制下按char型输出时,将从低位截取一字节而放弃前三个字节。下面的代码可以佐证此情况:

#include "stdio.h"
int main(int argc,char *argv[]){
int a=0xF978CA41;
char c='a',d=-2;
printf("a = %c\n",a);//这里只截取a的最低字节0x41,对应字符是A
printf("c = %d\n",c);//这里将c的值'a'(即97)符号位扩展后输出97
printf("d = %d\n",d);//这里将d的值-2符号位扩展后输出-2
return 0;
}

运行结果如下:

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
硪丨暧恋
2017-07-20 · TA获得超过8979个赞
知道大有可为答主
回答量:5336
采纳率:93%
帮助的人:2129万
展开全部
在C中,char型是一字节整型,int是四字节(早期的是二字节)整型,它们是可以通用的,甚至一些C的库函数如getc、getchar等在接收键盘输入的字符时返回的就是int型值而并非char型值。char型在%d控制下按int型输出时符号位将被扩展至总长度为四字节,而int型在%c控制下按char型输出时,将从低位截取一字节而放弃前三个字节。下面的代码可以佐证此情况:
#include "stdio.h"
int main(int argc,char *argv[]){
    int a=0xF978CA41;
    char c='a',d=-2;
    printf("a = %c\n",a);//这里只截取a的最低字节0x41,对应字符是A
    printf("c = %d\n",c);//这里将c的值'a'(即97)符号位扩展后输出97
    printf("d = %d\n",d);//这里将d的值-2符号位扩展后输出-2
    return 0;
}

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-08-13
展开全部
char 占 1byte, 范围-128~127.
int 早期占 2 byte, 范围-32768~32767, 近年来占4 byte, 范围-2G~+2G-1.
对 char c; int i; ...
printf("%c, %d", c, i); 是正常用法.
printf("%c, %d", (char)i, (int)c ); 是转型用法.
转型时 (int)c 是放宽, 没问题. (char)i 是缩小, 若i在 -128~+127就没问题, 否则会切除高位的bit.
printf("%c, %d", i, c ); 是错误用法:
对 i 用 %c时, printf抓最低位的byte,
在低位排前(little endian)的机器上, 效果上等於是拿 (char)i 去印.
在高位排前(big endian)的机器上就乱掉了.
对 c 用 %d时, printf会抓个4 byte, 结果要碰运气. 因为无法预测在内存中, c 的旁边放了什麼.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-08-13
展开全部
int型数据超过[0,127]这个范围就不能用%c输出
当一个int型数据在[0,127]这个范围内,它不一定能用%c输出
ASCII 表上的数字 0–31 分配给了控制字符,用于控制像打印机等一些外围设备。
是不可打印的 意思就是不可输出!!!!!!!!!!!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式