C语言之字符集、ASCII码和sizeof运算符

一 字符集和ASCII码

结论:字符本质上也是一个整数,每个字符都有唯一一个与之对应的整数,

比如说小写的a对应97,b对应98,c对应99,大写的A对应65,B对应66,C对应67

所以字符对应的那个数字,也可以称之为ASCII码值

二 sizeof运算符

sizeof:

  用法:sizeof(类型);

   sizeof(变量);

  sizeof(常量);

 可以计算这个类型或者变量或者常量占用的字节数

tips:

   sizeof结果是unsigned long类型(unsigned long; 无符号的long型  有符号:代表可以是负数  无符号:代表只能是正数

整数类型又分为无符号整型和有符号整型

int long short都是有符号的整型,其实完整的写法是在前面加一个signed,但是因为默认就是signed,所以直接写int  long short就可以了

也就是说 int long short都可以保存负数.tips: 整型有无符号和有符号之分别,浮点数没有unsigned

)

  1. sizeof如果计算的是字符常量,那么会默认把字符转成ASCII值,然后计算出来就是4个字节,注意:只是常量,字符类型和字符变量还是1个

tips:代码例子如下

#include <stdio.h>

int main(int argc, const char * argv[]) {

//字符集和ASCII码练习

//    int num1=10,num2=20;

//

//    //int sum = num1 + num2;

//

//    int sum = num1 + ‘a‘;

//

//    printf("%d\n",sum);//107

char ch = 97;

printf("%c\n",ch);//a

// sizeof运算符的练习

//sizeof计算类型

/*

int len = sizeof(char);

printf("%d\n",len);//1

int len2 = sizeof(int);

printf("%d\n",len2);//4

int len3 = sizeof(float);

printf("%d\n",len3);//4

int len4 = sizeof(long);

printf("%d\n",len4);//8

int len5 = sizeof(double);

printf("%d\n",len5);//8

*/

//sizeof计算变量

/*

int num = 10;

printf("%lu\n",sizeof(num));//4

char ch = ‘a‘;

printf("%lu\n",sizeof(ch));//1

float f = 303.333f;

printf("%lu\n",sizeof(f));//4

*/

//sizeof计算常量

printf("%lu\n",sizeof(10));//4

printf("%lu\n",sizeof(10l));//8

printf("%lu\n",sizeof(10.3f));//4

printf("%lu\n",sizeof(10.333));//8

printf("%lu\n",sizeof(‘a‘));//4个

return 0;

}

时间: 2024-10-13 00:07:42

C语言之字符集、ASCII码和sizeof运算符的相关文章

C语言字符转换ASCII码

//函 数 名:CharToHex()//功能描述:把ASCII字符转换为16进制//函数说明://调用函数://全局变量://输    入:ASCII字符//返    回:16进制/////////////////////////////////////////////////////////////////////unsigned char CharToHex(unsigned char bHex){    if((bHex>=0)&&(bHex<=9))        b

字符集详解 ASCII码、Unicode、UTF-8 (转)

认识字符集 对于计算机而言,它仅认识两个0和1,不管是在内存中还是外部存储设备上,我们所看到的文字.图片.视频等等“数据”在计算机中都是已二进制形式存在的.不同字符对应二进制数的规则,就是字符的编码.字符编码的集合称为字符集. 在早期的计算机系统中,使用的字符是非常少的,他们只包括26个英文字母.数字符号和一些常用符号,对于这些字符进行编码,用1个字节就足够了,但是随着计算机的不断发展,为了适应全世界其他各国民族的语言,这些少得可怜的字符编码肯定是不够的.于是人们提出了UNICODE编码,它采用

[整理]C语言中字符常量与ASCII码

所有的ASCII码都可以用"\"加数字(一般是8进制数字)来表示.而C中定义了一些字母前加"\"来表示常见的那些不能显示的ASCII字符,如\0,\t,\n等,就称为转义字符,因为后面的字符,都不是它本来的ASCII字符意思了. C语言中提供的所有的转码序列(转义字符序列): 转义字符 意义 ASCII码值(十进制) \a 响铃(BEL) 007 \b 退格(BS) ,将当前位置移到前一列 008 \f 换页(FF),将当前位置移到下页开头 012 \n 换行(LF

如何用C语言显示ascii码超过127的字符

C语言的程序代码如下: #include "stdio.h"main(){      int i;      for (i=1;i<256;i++)          {              printf("%c ",i);          }          getchar();} 显示结果: 编码在127以上的都显示为"?". 这是因为 编号在128-255的是扩展的编码,原本就不是作为显示用的,当然在不同的终端上显示就不一致

BCD与ASCII码互转-C语言实现

最近由于项目需要,需要将BCD编码转换为对应的字符串,下面为C语言实现,经测试好用! 转载请标明出处! /*BCD 与 ASCII码转换*/ /******************************************************************* 函数名: asc2bcd 功能描述:将ascii码转换为bcd码 参数: bcd:转换后的BCD码 asc:需转换的ASCII码串 len:需转换的ascii码串长度 返回值: uint32 0:成功 其他:失败 ***

2016.06.06 周一 C语言 将字符串根据字符的ASCII码从大到小排序并打印出字符串中的字符类型的总数

第一次变量冲突问题 解决了一个多小时,.... 代码如下: ↓ #include<stdio.h> #include<string.h> #define N 200 //输入字符串的最大长度 int main() { //************************输入开始部分******************************** printf("请输入字符串.(长度在200以内)\n\n"); int i=0,j,k,temp,lowLetter

C语言:从p所指字符串中找出ASCII码最大的字符,将其放在第一个位置上,并将该字符前的原字符向后顺序移动。

//fun函数:从p所指字符串中找出ASCII码最大的字符,将其放在第一个位置上,并将该字符前的原字符向后顺序移动. 1 #include <stdio.h> 2 void fun( char *p ) 3 { char max,*q; int i=0; 4 max=p[i]; 5 while( p[i]!=0 ) 6 { if( max<p[i] ) 7 { max=p[i]; 8 /**********found**********/ 9 q = p + i;//先找到最大值,记录最

编码格式简介:ASCII码、ANSI、GBK、GB2312、GB18030和Unicode、UTF-8,BOM头

编码格式简介:ASCII码.ANSI.GBK.GB2312.GB18030和Unicode.UTF-8,BOM头 二进制: 只有0和1. 十进制.十六进制.八进制: 计算机其实挺笨的,它只认识0101这样的字符串(二进制),当然了我们看这样的01串时肯定会比较头晕的. 所以很多时候为了描述简单都用十进制,十六进制,八进制表示.实际上都是等价的,没啥太多不一样. 位(bit) 计算机中存储一个0,或者一个1的位置空间,叫做位. 字节(byte) 计算机中,我们把连续的8个位空间,叫做一个字节. A

过滤ASCII码中的不可见字符, ASCII三部分, 各控制字符详解

今天产品部同事报告了一个BUG,经过调试发现,由于用户输入的字符串中,包含字符0x1E, 也就是”记录分隔符”(Record Separator, Notepad++ 显示为[RS]),导致JavaScript XML解析遭遇错误.于是就想在字符串中过滤掉这些没多大用途的字符,同时又要保留部分常用的字符,例如换行,回车和水平制表符.于是写了下面一个 PHP 函数: /** * 清理字符串中的部分不可见控制字符 * * @param string $string 待处理字符串 * @return