四.运算符,表达式和语句

#include<stdio.h>

#define ADJUST 7.31

int main(void)

{

const double SCALE = 0.333;

double shoe, foot;

printf("Shoe size (men's) foot length\n");

shoe = 3.0;

while (shoe < 18.5)

{

foot = SCALE * shoe + ADJUST;

printf("%10.1f %15.2f inches\n", shoe, foot);

shoe += 1.0;

}

printf("if the shoe fits, wear it.\n");

return 0;

}

一些术语

用于储存值的数据存储区域统称为数据对象。C标准只有字体到这个概念时才会用到对象这个术语。

左值时C语言的术语,用于标识特定数据对象的名称或表达式。因此对象指的是实际的数据存储,而左值是用于标识或定位存储位置的标签30

除法注意事项

整数除法的结果时整数,浮点数除法的结果是浮点数。

整数除法的小数部分会被丢弃,这一过程被称为截断。

负数应该使用趋零截断,即-3.8 会写成 -3

sizeof


sizeof 运算符以字节为单位返回运算对象的大小(在C中,1字节的定义为char 类型占用空间的大小)

C语言规定,sizeof返回size_t类型的值,这是一个无符号整数类型,但它不是新类型。C头文件系统可以使用typedef把 size_t 作为 unsigned int 或 unsigned long 别名。

typedef:允许程序与为现有的类型创建别名,例如:

typedef double real;

这样real就是double 的别名。可以声明一个real类型变量:

real deal;

求模运算符:%


负数求模,根据C99新规的“趋零截断”如果第一个运算对象对象是负数,那么求模的结果为负数;如果第一个运算对象是正数,那么求模的结果为正数。例如:

11 % 5 = 1, 11 % -5 = 1, -11 % 5 = -1, -11 % -5 = -1;

递增和递减运算符++, --


都只能影响一个变量(可修改的左值),例如:(x * y)++是无效的

注意事项:


根据C标准,声明不是语句,与C++不同。

C语言中,赋值和函数调用都是表达式,没有所谓的“赋值语句”和“函数调用语句”,这些语句实际上都是表达式语句。

每个表达式都有一个值。

类型转换


1.无论是 unsigned 还是 signed 的 char, short 都会被自动转换成int,如有必要,还会转换成 unsigned int (如果short 和 int 大小相同,unsigned short 会比 int 大,如此一来unsigned short 会自动转换为 unsigned int)

2.涉及两种类型的运算,两个值会被分别转换成两种类型的更高级别。

3.当作为幻术参数传递时,char 和 short 会被转换成 int, float 会被转换成 double

4.降级,较低类型可能放不下整个数字

5.目标类型是无符号整型,且待赋的值是整数时,额外的位将会被忽略,例如:

假设目标类型是一个8位无符号整型,待赋的值是十进制数57(二进制表示为00111001),则:

  • 如果将57赋值给该无符号整型变量,那么它将被存储为00111001,因为57的二进制表示正好占用8位,没有多余的位。

  • 如果将6赋值给该无符号整型变量,那么它将被存储为00000110,因为6的二进制表示只占用3位,不足8位的高位会被自动补零。

  • 如果将1000赋值给该无符号整型变量,那么它将被存储为11101000,因为1000的二进制表示占用10位,超过了8位目标类型的位数,多余的两位将被忽略。

6.如果目标是一个有符号整型,且待赋的值是整数,结果因实现而异

7.如果目标类型是一个整型,且待赋值的是浮点数,该行为是未定义的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Benaso

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值