C语言编程基础学习字符型数据的ASCII码值为何是负数?

C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制)。

C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事务)控制。 所以C与C++的最大区别在于它们的用于解决问题的思想方法不一样。之所以说C++比C更先进,是因为“ 设计这个概念已经被融入到C++之中 ”。

C与C++的最大区别:在于它们的用于解决问题的思想方法不一样。之所以说C++比C更先进,是因为“ 设计这个概念已经被融入到C++之中 ”,而就语言本身而言,在C中更多的是算法的概念。那么是不是C就不重要了,错!算法是程序设计的基础,好的设计如果没有好的算法,一样不行。而且,“C加上好的设计”也能写出非常好的东西。

有如下一段C说话轨范:

#include "stdio.h"

int main(void)

{

char a = 0xC8;

printf ("字符a的ASCII码值的10进制是%d ", a);

return 0;

}

轨范界说了一个字符‘a’,并且赋予了初始值“0xC8”,这是一个16进制的数。末了,经由过程printf函数输出字符a的值。

轨范不难,光不雅观不雅观点式,也应该晓得终极的成效。16进制“0xC8”的10进制数是200,所以轨范应该输出字符a的ASCII码值是200吧。实际运转成效如下:

成效是-56,仍是个负数,C说话初学者估量一头雾水了。

其实字符a在界说时若是就写一个“char”,则就默认类型是“signed char”,也就是说字符a的10进制ASCII码值是有符号的,取值规模是【-128,127】,那么200这个数必定就跨越这个规模,跨越的局部是200 – 127 = 73。那么跨越的局部又从-128起头计数了,也就是-128 + 73 - 1 = -56了。

若是在界说字符a时,类型写成“unsigned char”,那么旧标明字符a的10进制ASCII码值是无符号的,取值规模就是【0,255】了。伴侣们可以改削下轨范看算作果是什么。

这些是C/C++能做的

服务器开发工程师、人工智能、云计算工程师、信息安全(黑客反黑客)、大数据 、数据平台、嵌入式工程师、流媒体服务器、数据控解、图像处理、音频视频开发工程师、游戏服务器、分布式系统、游戏辅助等

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180305A0RYMR00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注腾讯云开发者

领取腾讯云代金券