C语言-数据类型、运算符与表达式
37 各类数值型数据间的混和计算
例 5864
显然58和64的计算应首先完成但乘法的两个运算对象58和64哪一个先做运算对象求值顺序 C 语言对此没有明确规定程序里不应
该写对求值顺序敏感的表达式运算符的结合性并不是总成立例 10 -3 unsigned 1 10 -3 unsigned 1 两个表达式不是等价的写法类
型名表达式
表示要将指定表达式的计算结果转换成要求的类型 3强制类型转换
运算符例如
int36586int2088620626
doublea
float53 注意表达式应该用括号括起来如果写成 intxy
则只将 x 转换成整型然后与 y 相加 main
float x
int i
x36
iintx
printfxfid\nxi
运行结果
3600000i3 例38强制类型转换类型转换中可能会有信息丢失如果被转换的数据值在给定类型里无法表示得到的结果无法预料 C 语言允许任何两个数值类型之间的互相转换显式类型转换在语言里被作为一元运算符看待具有与其他一元运算符同样的优先级和组合方式强制类型转换不改变变量原来的类型要点自增自减运算符的作用
自增运算符使变量的值增一
自减运算符--使变量的值减一 4.自增自减运算符例如int i i--i 在使用i之前先使i的值加减1
ii-- 在使用i之后使i的值加减1 main
int i3
printf"id\n"i
printf"id\n"i
printf"id\n"i
printf"id\n"i
运行结果
i3
i4
i5
i5 例子自增运算符和自减运算符--只能用于变量不能用于表达式注意例如 ii 是正确的用法 ij和ij及-i 是错误的用法和--的结合方向是自右向左例如 -i 相当于–i i或i--作为
表达式和作为语句的执行结果不同例如作为表达式i 等价于i
都等价于ii1
作为语句 yi并不等价于 yi
因为 yi执行后 y 的值为3
yi执行后 y 的值为4 include main
int i3km
m8
k-i
printf"kd\n"k
printf"id\n"i
kim
printf"kd\n"k
printf"idmd\n"im
例子运行结果
k-3
printf怎么输出字符i4
k13
i5m9 1C 语言没有具体规定表达式中子表达式的求值顺序 5.有关表
达式使用中的问题说明例如
af1f2
执行时是先调用f1 还是先调用f2 并无具体规定
例如如果 i3求值表达式 i i i 例如如果 i3求值表达式 i
i com 字符数据在内存中的存储形式及其使用方法每个字符型数据所占的内存单元数为一个字节8个二进制位既然在内存中字符数据以ASCII码存储它的存储形式就与整数的存储形式类似 C 语言使字符型数据和整型数据之间可以通用实际上并不是把该字符本身放到内存单元中去而是将该字符的相应的ASCII代码放到存储单元中一个字符数据既可以以字符形式输出也可以以整数形式输出以字符形式输出时需要先将存储单元中的ASCII码转换成相应字符然后输出以整数形式输出时直接将ASCII码作为整数输出字符数据可以进行算术运算相当于对它们的ASCII码进行算术运算例向字符变量赋以整数 main char c1c2 c197 c298 printfc c\nc1c2 printfd d\nc1c2 c1a c2b 1 0 0 0 0 1 1 0 a 存储ASCII码 c
d a 97 输出格式符显示例大小写字母的转换
main char c1c2 c1 a c2 b c1 c1-32 c2
c2-32 printfc cc1c2 运行结果为 A B 字符数据与整型数据
可以互相赋值 int i
char c
ia
c97 都是合法的 printfcd\n c c printfcd\n i i 输出结果 a97 a97 说明字符char对象要大到足以存储执行字符集execution character set中的任何字符如果字符集中的某个字符在一个char 对象中那么该字符的值等于字符的整数码并且是非负的其它量也可以存储在char变量中但其取值范围特别是其值是否有符号依赖于具
体的实现以unsigned char 说明的无符号字符与普通字符占用同样的空间但其值总是非负的以signed char 显示说明的有符号字符与普通字符占用同样的空间例 unsigned char uc255 signed char sc-1 char c-1 int ijk iuc i255 jsc j-1 kc
k com 字符串常量字符串常量是双引号括起来的字符序列注意在字符串中间不能换行例如 How do you do CHINA Beijing 1250 x13\n \x41\x42\x43 a 可以输出一个字符串printfHow do you do 字符串太长怎么办第一种方法
如果顺序地写出了两个或多个字符串它们之间仅由空格换行或制表符分割那么在程序加工过程中这些字符串将自动地连接在一起形成
一个长的字符串
this is a
string 第二种方法
在一行末尾的地方加上反斜杠\符号可以实现两个源代码行的拼接
this is a \
string C 语言规定在每一个字符串的结尾加一个字符串结束标志以便系统据此判断字符串是否结束 C 语言规定以字符 \0 作为字符串结束标志 \0 是ASCII码为0的字符注意在写字符串时不必加\0它时系统自动加上的 CHINA实际上在内存中是
它的长度不是5个字符而是6个字符最后一个字符是\0但在输出时不输出\0也没有办法输出它 \0 A N I H C 字符串和字符区别 a和a是不同的 a是字符常量一个字符 a是字符串常量两个字符 a
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论