逃逸字符与类型转换

<1>逃逸字符的介绍

————用来表达无法印出来的控制字符或特殊字符,它由一个反斜杠“\”开头,后面跟上另个字符,这两个字符合起来,组成了一个字符

举例:

printf("请分别输入身高的英尺和英寸,""如输入"5 7"表示5英尺7英寸:");
这个字符在语句中表达的就是" "的含义,使用这种表达方式的原因是,在双引号中不能直接出现双引号,否则他认为相邻的两个双引号之间是一个字符串

<2>逃逸字符及其意义

(1)逃逸字符的类型

\b-回退一格;(通常做的是回退但不删除)————\r-回车———— \n-换行————\t-到下一个表格位————\-反斜杠本身————'-单引号———— "-双引号;

注意:在不同的编译器中,使用逃逸字符所产生的结果并不一定相同,这是因为不同编译器的shell对不同的工具字符(逃逸字符属于控制字符)做出不同的反应。

(2)由\t引申到制表位

  • 每行的固定位置(常用于缩进);
  • 一个\t使得输出从下一个制表位开始;
  • 用\t才能使得上下两行对齐;

<3>类型转换

(1)自动类型转换

出现情况:当运算符的两边出现不一致的类型,会自动转换成较大的类型(指的是表达的数的范围更大);

1)特殊情况:

  1. 对于printf,任何小于int的类型会被转换为int,float会被转换成double;
  2. 但是scanf不会,例如要输入short,需要%hd;

(2)强制类型转换

————把一个变量强制转换成另一个类型(通常是大转小)

格式:(类型)值-例如(int)10.2

注意:在此处应该注意安全性,小的变量不能总表达大的量——例如short32768

以代码为例解释:

#include<stdio.h>

int main(){
printf("%d",(short)32768);
return 0;
}
得出的结果为-32768,因为32768超出了short最大能表示的范围32767,同理,若将其转换为(char)32768答案也不正确,得到的结果为0,因为char是8个bit的,而32768是10…0(15个0);

注意:1)强制类型转换只是从原来的变量计算出了一个新的类型的值,但并不改变原来变量的类型和值。

2)考虑优先级:强制类型转换的优先级高于四则运算,所以(int)a/b意为先将a转换为整型再进行相除。(int)(a/b)才是取a/b的结果的整型

posted @ 2023-11-13 01:53  瑜阳  阅读(173)  评论(0)    收藏  举报