- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言程序设计上数据类型运算符与表达式
二、字符变量 用关键字 char 来说明。如:char c1 , c2 ; char min ; 一个字符变量只能存放一个字符,一般在内存中占一个字节 ( 8位 )。 三、字符变量在内存中的存储形式及使用方法 例题:(补充) main ( ) { char c1 ; int c2 ; c1 = 97 ; c2 = ‘b’ ; printf ( “ %c ,%c \n ” , c1 , c2 ) ; printf ( “ %d ,%d \n ” , c1 , c2 ) ; } 输出: a,b 97,98 97c1 98c2结论: 字符变量与整型变量在一定范围内可以通用, 即:二者可以互相赋值,也可以以字符形式或整数形式输出。 请问:这个范围是哪个范围? 实际上,有些系统( 如Turbo C )就是将字符型变量当作一个整型来处理的,只是它仅有一个字节罢了。比如,我们可以这样定义a : signed char a; 等同于 char a; 取值范围为( –128 ~ 127 ) 。 unsigned char a; 取值范围为( 0 ~ 255 ) 。 如: signed char c = ‘\376’ ; printf ( “ %d ” , c) ; 输出为: – 2 0~255 或 -128~127 1 1111110 0 0000001 按位取反 加1 – 2 0 0000010 这是一个3位八进制数 可省略 四 、字符串常量 由若干个系统所允许使用的字符组成的序列,叫字符串。 C 语言中用一对双引号括起来的字符序列表示字符串常量。 如: “CHINA” ; “ How do you do ? ” C 语言对字符串常量的长度不加限制,C 编译系统总是 自动在字符串末尾自动加上一个转义字符 ‘\0’ (空操作符,不可显) ,作为字符串常量的结束标志,以便于用户和系统对字符串的处理。如: “Hello” 在内存中占6个字节。 H e l l o \0 72 101 108 108 111 0 注意:字符常量与字符串常量是两个不同类型的数据。 如: ‘a’ 和 “a”,在内存中存放的形式分别为: a ‘a’ a \0 “a” C 语言中各类型数据间可以进行混合运算,但不同类型的数据应先转换成同一类型,然后进行运算。 double float long double long int int short char unsigned long unsigned int unsigned short unsigned char C/C++类型转换的方向 转换规则为: 存储格式相同时,向存储空间大的方向转换;存储格式不同时,向double类型转换。 §3.6 不同类型数据间的混合运算(P54) 如:假设已定义i为int变量,f为float变量,d为double变量,e为long变量,则10 + ‘a’ + i*f – d/e的运算过程为 (1) i, f? double型? i*f (2) e ? double ? d/e (3) ‘a’? 97 ? (10+97) (4) 107 ? double型再加i*f的结果 (5) 将10 + ‘a’ + i*f 的结果与d/e的商相减结果为double型。 关于强制类型转换:以上所讲的类型转换是系统在运算过程中自动进行的,称为隐式类型转换。与之对应的是强制类型转换(又称显式类型转换),它是由程序员人为地强行指定其类型转换。 格式: (类型名) (表达式) 如: (double) a ( 将 a 转换成 double 类型 ) (int) (x+y) ( 将 x + y 的值转换成整型 ) 注意: 1、在强制类型转换时,得到的是一个所需类型的中间变量,原来的变量的类型并未发生变化。 例: main ( ) { float x ; int i ;
文档评论(0)