问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C语言中关于char和int的问题

发布网友 发布时间:2022-04-28 21:19

我来回答

5个回答

热心网友 时间:2022-06-23 06:07

    C语言是一种弱类型语言,如果使用熟练了你就会知道,类型什么的都是浮云,内存才是王道,考虑问题的时候要深入本质才行,关于这个问题从内存来看,如下:

char是字符型,内存中占用 1 个字节,取值范围是-128到127,int类型占用 4 个字节,范围就不说了,肯定是比char要大的多,这两个都是有符号数。

char和int一般情况下是可以直接做加减运算的,你可以直接把char当成一个int,只不过取值范围小点;

不同类型的数值在做运算时,以尽量不丢失有效数据为原则,比如char和int相加,系统会自动把char转换成int,最终结果也是int型;

赋值时如果类型不一样,要小心,若等号左边的类型小于右边的,会产生截断赋值(特别注意),大于的话就没问题,不会丢失有效数据。

如你写的第一句,A-B是int,C是char,比较时会先把char转换成int,也就是从1个字节变成4个字节,肯定不会丢失有效数据,没问题;

第二句,A+B是int,要赋值给char型C,相当于把4个字节的信息装到1个字节的内存中,这肯定放不下,因此会产生截断赋值,取A+B结果的最后一个字节赋值,前面三个字节则会丢掉,

所以这些写会有风险(当然编译肯定是过的,只是警告罢了),这种情况下,如果A+B结果没超过char取值范围,也问题,因为不会丢失有效数据,如果超过了的话,结果就不是它应该有的结果了,这是就要小心了,所以一般别这么写,除非你确定数据不会越界,一旦越界就会截断赋值(只是结果不对,但程序也不会崩溃的)。

追问写的好详细,其实第二题的前提条件变了,A和B变为int,C是char.
不过根据您的回答我能判断出第二句应该也是成立的了,谢谢!也谢谢其他人了,只好选择最详细的了,不好意思

追答汗,没看仔细,不过你明白就好了!

热心网友 时间:2022-06-23 06:07

char 占一个字符
int 占四个字符
两者不能直接比较
解决方法为强制转换后进行比较
C=(A+B); 这个就更离谱,一个char怎么能容下int,必然会出现内存越界访问问题,引起程序崩溃

热心网友 时间:2022-06-23 06:08

语法角度上来说,是没有问题的,如果不同类型的变量做比较的时候,会同意转换为ASCII码,比较或者计算。

热心网友 时间:2022-06-23 06:08

首先你能否确定在你的C平台上,char是unsigned(无符号)还是signed(有符号)?
假定是有符号类型,则char可表示的范围是-128 -- 127,且A - B的范围也在此内,那么无论平台如何转换,都能给出正确结果;如果A - B超出该范围,平台势必会将C的类型扩展到int类型,以便于给出比较结果,目前流行的平台大都能够做出合理的扩展。
如果char是无符号类型,而A - B小于零,这该如何是好呢?

对于第二个问题则不是问题,完全可以给出正确结果。

热心网友 时间:2022-06-23 06:09

f (C<(A-B)) 可以运行,char 是范围更小的 int
C=(A+B); 这个语句有问题:可能会溢出。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
父母离异的话,会不会导致孩子心智不成熟? 过节 公司给我们发的购物卡 这个怎么做分录 属于福利费吗 需要计提吗... 乡村振兴公务员和省考公务员有什么区别 ...小时候跟着爷爷学国画书法,小受家是农村的,小受姓夏或叶,他带着他... 瑞麒X1安全装置 瑞麒X1的舒适型和豪华型有什么区别?配置有哪些不同的地方?这5000块多在... 瑞麒X1的安全性能方面配置如何? 脚崴了 有大量於血 怎么样才能快速消肿 脚崴了外侧出现瘀血浮肿怎么消除? ...换了我喜欢的发型,但是穿了件有点透明的衣服,可以看到肩_百度... c语言中,int、float、char的取值范围是多少 c语言里,char c1,c2和int c1,c2的区别?是否等价? 解一元一次方程的步骤是什么?? 钢筋的抗剪强度是多少呢? 讲解一元一次方程去括号衔接 钢筋拉伸,冷弯,屈服强度是什么意思? 解一元一次方程二去括号与去分母 钢筋力学性能和工艺性能试验内容是什么 解一元一次方程去括号的依据_和_。 650mm厚钢筋混凝土板抗弯强度是多少? 解一元一次方程的基本步骤 钢筋抗拉设计强度 屈服强度关系? 求解一元一次方程去括号题两道~加讲解 钢筋力学性能 一元一次方程去括号与去分母 水泥混凝土路面中的弯拉强度、抗弯强度有什么区别 一元一次方程 去括号 怎样解啊 钢筋拉伸,冷弯,屈服强度是什么意思 一元一次方程的解法? 一元一次方程式怎么去括号,就是如果括号前面是数字 char, int, float ,double ,long double各自的字节数,取值范围是 c语言中 char,short,int,float,double分别是用来表示哪些数据类型的? C语言中,char类型是不是完全可以替代int类型啊? char c; int a=350;c=a; printf(&quot;%d&quot;,c); return 0; c++ int型指针和char型指针有什么区别, 在什么范围内int型和char型可以通用 2021年宜宾学院理工二本单科成绩不少百分之多少2021年宜宾学院理工二本物理成绩不少与多少分_百度问一问 新店如何引流与推广 优酷下载的视频在哪里去了? 为什么在优酷上下载的视频不能在本地视频中找到,怎样可以找到 怎么导出QQ里的聊天记录 我怎么才可以导出QQ上的聊天记录? 五十几岁买什么保险好 北京492Q汽油机气缸体是水冷式还是风冷式还有气缸套的结构特点 50岁的人应该买什么保险? 北京水冷空调在厂房降温可以吗? 北京派艾斯 NTR气体发生器隔音罩怎么样? 机房精密空调的风管机、水冷机、多联机一、风管机-风管式系统各是什么东东? 电脑上如何添加“输入法”? 什么是机械零件的失效