基本类型:整型与字符型

一、整型int

1.1 概述

整数类型用来表示不同的取值范围和正负值,含义和数学一样,整数是没有小数部分的值;

区分正负的类型,称为有符类型(signed),无正负的类型(只有正值),称为无符类型。 (unsigned);当声明某变量类型为无符号类型时,需要在类型声明前显示使用unsigned;

1.2 int类型

short int 类型:简写short,C规定占用的空间不能多于int

long int 类型: 简写 long ,占用的空间可能比int多;

long long int 类型: 简写 long long 占用的空间可能比long多;

C标准对基本数据类型只规定了允许的最小大小,这样占用空间的规定是为了适应不同的机器,int 默认被认为是计算机处理整数类型时最高效的类型;考虑某些硬件寄存器16位或者程序开发占用空间资源紧缺情况下,才考虑使用short,只有超出int类型表示的范围才考虑long及long long类型;

 1 //占用空间的大小
 2 #include <stdio.h>
 3 int main(void)
 4 {
 5      /* c99 provides a %zd specifier for sizes */
 6      printf("Type short     has a size of %zd bytes.\n", sizeof(short));
 7      printf("Type int       has a size of %zd bytes.\n", sizeof(int));
 8      printf("Type long      has a size of %zd bytes.\n", sizeof(long));
 9      printf("Type long long has a size of %zd bytes.\n",sizeof(long long));
10      return 0;
11 }
12
13 //Ubuntu16.04 64bit print:
14 Type short     has a size of 2 bytes.
15 Type int       has a size of 4 bytes.
16 Type long      has a size of 8 bytes.
17 Type long long has a size of 8 bytes.

1.3 C语言中的转换说明打印不同int类型

以十进制显示输出使用%d,

以八进制显示输出使用%o或%#o(在数字前面显示进制代表符号)

十六进制显示输出使用%x或%X或%#X;

short类型使用前缀h:即%hd表示以十进制显示short类型的整数,%ho以八进制显示short类型的整数,%hx表示以十六进制显示short类型的整数;

1 #include <stdio.h>
2 int main(void)
3 {
4     short  i = 4;
5     printf("i = %hd \n", i);
6     printf("i = %#ho \n", i);
7     printf("i = %#hx \n", i);
8     return 0;
9 }

long 类型使用前缀l:即%ld表示以十进制显示short类型的整数,%lo以八进制显示short类型的整数,%lx表示以十六进制显示short类型的整数;

相应的,long long类型使用前缀ll;

注意:

不同的转换说明是指定计算机以什么样的格式进行存储和计算,使用不正确的转换可能产生错误;

 1 #include <stdio.h>
 2 int main(void)
 3 {
 4     short sn = 200;
 5     long ln = 65537;
 6     long long lln = 184467440737095516;
 7     printf(" sn = %hd and %d\n", sn, sn);
 8     printf(" ln = %ld not is %hd\n", ln, ln);
 9     printf("lln = %lld not is %ld \n", lln, lln);
10     return 0;
11 }
12 //print as:
13  sn = 200 and 200
14  ln = 65537 not is 1
15 lln = 1234567891708641112 not is -171798692

结论:

1.int类型被认为是计算机处理整数类型时最高效的类型,当给函数传递参数时,编译器把short类型自动转换为int类型

2.65537已超出short类型能表示的范围,使用%hd转换说明来显示一个已超出short类型的数据时,计算机则进行显示该较大整数截断成short类型的值后进行输出显示,由此可推出:超出类型所表示的范围时,数据将产生截断;

short类型最大范围:2^16 - 1 = 65535 即这16位上的数字全是1

可以推出65537用二进制表示时第17位和第1位上的数字为1其余为0;

用short类型显示输出long类型数据时,只显示后16位,故输出为1;

二、字符型char

2.1 字符型的本质

计算机使用数字编码来处理字符,即使用特定的整数表示特定的字符,故char本质上为整型;

美国最常用的编码是ASCII编码,标准范围0~127,只需要7位二进制即可表示;但也存在其他字符集超过了127,例如日本汉字kanji字符集,商用统一码Unicode等等;

C语言把1字节定义为char类型占用的位数;即1Byte=8bit,故无论16位还是32位系统都可以使用char类型

2.2 字符常量和初始化

用单引号括起来的单个字符被称为字符常量,当编译器发现’A’便会将其转换为相应的代码值(65);注意:单引号仅适用于字符、数字和标点符号;

2.3 非打印字符

非打印字符通常是一些表示行为的字符,如退格、换行、终端响铃或封鸣,C语言中使用转义序列来表示一些特殊的字符,同样的将转义序列赋值给字符变量时,必须使用单引号将转义序列括起来;

 1 转义序列         含义
 2 \a              警报
 3 \b              退格
 4 \f              换页
 5 \n              换行
 6 \r              回车
 7 \t              水平制表位
 8 \v              垂直制表位
 9 \\              反斜杠(\)
10 \’              单引号
11 \”              双引号
12 \?              问号

2.4 打印字符

1 #include <stdio.h>
2 int main(void)
3 {
4     char ch;
5     printf("Please enter a character…\n");
6     scanf("%c",&ch)
7     printf("The code for %c is %d\n", ch, ch);
8     return 0;
9 }

输入某字母后按下回车键,scanf()函数会读取输入的字符,&符号表示将输入的字符赋给变量ch,printf()函数将打印两次ch,一次打印字符类型(转换说明%c),一次打印整型(%d)

2.5 字符型是有符号还是无符号

取决于编译器,有的编译器将char实现为有符号类型,表示范围是-128~127,有些编译器则实现为无符号类型,即表示范围是0~255;但是C语言允许在char前面使用signed,unsigned来显示指定具体;

原文地址:https://www.cnblogs.com/Shuqing-cxw/p/9251430.html

时间: 2024-08-26 13:54:06

基本类型:整型与字符型的相关文章

[SAS]易错例子之数值型转字符型

/* 数值型缺失,可赋值点号(.),data步可以用 var = . 或 missing(var)判断 字符型缺失,可赋值0个或多个空格('' 或' '等), data步可以用var = '' 或missing(var)判断 以下是数值型缺失转字符型的例子,但缺失转换后不缺失,易做错. */ data test; input var; datalines; 1 . ; run; /* 错误转换*/ data test2; set test; var2 = compress(put(var, 8.

Sql注入的分类:数字型+字符型

Sql注入: 就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令.通过构造恶意的输入,使数据库执行恶意命令,造成数据泄露或者修改内容等,以达到攻击的目的.主要是由于应用程序对用户的输入没有进行严格的过滤而造成的. 一.万能密码 在说sql注入分类之前,先来看一下万能密码的构成原理.万能密码是由于某些程序,通过采用判断sql语句查询结果的值是否大于0,来判断用户输入数据的正确性造成的.当查询之大于0时,代表用户存在,返回true,代表登

让人又爱又恨的char(字符型)

今天来总结一下char型,平常写算法的时候对这个东西感觉都有一点绕着走,说到底还是对这部分的知识不熟悉所以有点怕他,不过以后不要怕,今天来总结一下 首先,说到字符型数据类型,char型,恩它是一种数据类型 然后,就是字符型变量 字符型变量的重点是将一个字符存入字符变量中,实际上存入的不是这个字符的形,而是这个字符的ASCII码 输入:getchar(); 输出:putchar(); getchar和scanf的区别在于他可以输入空格 字符型常量: 1.普通 'a' 2.转义 1.‘\t’ 斜杠+

c语言整型和字符型的自动类型转换

char a = -1; //机器码为0xff unsigned char b = 254; //机器码0xfe if (a <= b){ printf("a <= b\n"); } else{ printf("a > b\n"); } 上述代码输出结果: a > b 赋值用机器码写入内存 虽然我们以十进制为两个变量赋值,但是变量值在内存中是以二进制机器码的形式存在.如果十进制数是负数,它就以补码的形式存放在内存中.比如"a = -

php字符型转整型

1 $arr = array(0=>1,"aa"=>2, 3, 4); 2 3 foreach($arr as $key=>$val){ 4 print($key == "aa" ? 5 : $val); 5 } 输出结果:5534 why: 在PHP中两个值进行逻辑判断时,如果两个值的类型不一致PHP会自动把右边的值转换到左边的类型, 然后再进行判断.因此"aa"转换整形等于0,自然也就等于左边的0了. 字符型转换整形 示例:

课程作业1:字符型强制转化为整型

设计思想:题目要求是从命令行中接受多个数字,求和.而我们知道命令行中的输入的数据类型是字符型,所以必须转化为整型才能相加.所以我们的思路是:在输入字符串后,用for循环依次强制转化为整型,然后依次相加. 程序流程图: 源程序代码: //计算输入数字之和    //白悦 20153182    package main;    public class Add {    public static void main(String[] args){      int a=0;//定义一个变量来储存

再回首,Java温故知新(五):Java基本数据类型之字符型

Java作为一种强类型语言,意味着每一个变量都会有特定的类型,Java共有8种基本类型,其中有4种整型(byte.short.int.long).两种浮点型(float.double).1种字符型(char)和一种布尔型(boolean),值得注意的是,虽然字符串String非常常用,但是它却不属于基本类型. 三.字符型(接上篇浮点型) char类型用于表示单子字符,Unicode编码单元可以表示为十六进制,范围是从\u0000~\uffff,Java中的char类型使用16位的Unicode字

PDO 查询mysql返回字段整型变为String型解决方法

PDO 查询mysql返回字段整型变为String型解决方法 使用PDO查询mysql数据库时.运行prepare,execute后,返回的字段数据全都变为字符型. 比如id在数据库中是Int的.查询后返回是String型. 对于php这样的弱类型的语言.影响不大. 在做API返回数据时.假设类型与数据库不一致,对于java和Objective C这些强类型,影响就非常大了. 解决方法: <?php $pdo = new PDO($dsn, $user, $pass, $param); // 在

java 复习-字符型变量

在java中,字符型变量用char 表示,用来存储字母.数字.标点符号等字符.占两个字节,用unicode编码,可以表示中文和英文.字符要用单引号包围.比如 'A'  '我' 注意事项:     有些特殊的字符,不能直接用单引号,要用转义字符表示.  (1) \n :表示换行  (2) \t :表示制表符,相当与Tab键  (3) \' :表示单引号  (4) \" :表示双引号  (5) \\ :表示一个斜杠"\"  package charTest; public cla