#include<stdio.h>
#define ADJUST 7.31 int main(void)
{
const double SCALE = 0.333;
double shoe, foot;
printf("Shoe size foot length\n");
shoe = 3.0;
while (shoe < 18.5)
{
foot = SCALE * shoe + ADJUST;
printf("%10.1f %15.2f inches\n", shoe, foot);
shoe = shoe = 1.0;
}
printf("If the shoe fits,wear it.\n");
system("pause");
return 0;
}
/*该代码会一直运行下去*/

基本运算符

赋值运算符
#include<stdio.h>

int main(void)
{
int jane, tarzan, cheeta;
cheeta = tarzan = jane = 68;
printf("cheeta tarzan jane\n");
printf("First round score %4d %8d %8d\n", cheeta, tarzan,jane);
system("pause");
return 0;
}
加法运算符
printf("%d",4+20);
减法运算符
someone = 22-12;
符号运算符
value = -1;
value = +1;
乘法运算符
cm = 2.5*inch;
#include<stdio.h>

int main(void)
{
int num = 1;
while (num < 21)
{
printf("%4d %6d\n", num, num*num);
num = num + 1;
}
system("pause");
return 0;
}
除法运算符
value_2 = 6.0/3.0

浮点数除法的结果是浮点数,而整数除法的结果是整数。在浮点数和整数的运算中,会把整数先化为浮点数。

#include<stdio.h>

int main(void)
{
printf("integer division:5/4 is %d\n", 5 / 4);
printf("float division:7/4 is %1.2f\n", 7. / 4.);
system("pause");
return 0;
} /*
result:
integer division:5/4 is 1
float division:7/4 is 1.75
*/

其他运算符

sizeof运算符和size_t类型

sizeof运算符以字节为单位返回对象的大小。

#include<stdio.h>

int main(void)
{
int n = 0;
size_t intsize;
intsize = sizeof(int);
printf("n = %d, n has %zd bytes; all ints have %zd bytes.\n", n, sizeof n, intsize);
system("pause");
return 0;
}
/*
result:
n = 0, n has 4 bytes; all ints have 4 bytes.
*/
求模运算符%
#include<stdio.h>
#define SEC_PER_MIN 60 int main(void)
{
int sec, min, left;
printf("Convert seconds to minutes and seconds!\n");
printf("Enter the number of seconds(<=0 to quit):\n");
scanf_s("%d", &sec);
while (sec > 0)
{
min = sec / SEC_PER_MIN;
left = sec % SEC_PER_MIN;
printf("%d seconds is %d minutes,%d seconds.\n", sec, min, left);
printf("Enter next value(<=0 to quit):");
scanf_s("%d", &sec);
}
printf("Done!\n");
return 0;
}
递增运算符
#include<stdio.h>

int main(void)
{
int a = 1, b = 1;
int a_post, pre_b;
a_post = a++; //后缀递增
pre_b = ++b; //前缀递增
printf("a:%ld a_post:%d b:%d pre_b:%d\n",a,a_post,b,pre_b);
system("pause");
return 0;
}
/*
result:
a:2 a_post:1 b:2 pre_b:2
*/
递减运算符
#include<stdio.h>

int main(void)
{
int a = 100, b = 100;
int a_post, pre_b;
a_post = a--;
pre_b = --b;
printf("a:%ld a_post:%d b:%d pre_b:%d\n",a,a_post,b,pre_b);
system("pause");
return 0;
}
/*
result:
a:99 a_post:100 b:99 pre_b:99
*/
优先级

只有圆括号的优先级比递增/递减运算符优先级高,而且其只影响一个可修改的左值。

表达式和语句

表达式

表达式是由运算符和运算符对象组成,一些表达式由子表达式组成。还有一些表达式是逻辑表达式,其值不是0就是1.

语句

语句是C语言程序的基本构建块,一条语句相当于一条完整的计算机指令,且大多数都是以分号结尾。

副作用:如state=50,C会对其求值,而对该表达式求值的副作用就是把变量states的值改为50.
序列点:在C语言中,语句中的分号标记了一个序列点。意思是,在一个语句中,赋值运算符、递增运算符和递减运算符对运算对象做的改变必须在程序执行下一条语句之前完成。
符合语句

符合语句是用花括号括起来的一条或多条语句,复合语句也称为块。

类型转换

基本规则
  1. 当类型转换出现在表达式时,无论是unsigned还是signed的char和short都会被自动转换成int,如有必要会被转换成unsigned int(如果short与int的大小相同,unsigned short就比int大。这种情况下,unsigned short会被转换成unsigned int)。在K&R那时的C中,float会被自动转换成double(目前的C不是这样)。由于都是从较小类型转换为较大类型,所以这些转换被称为升级。
  2. 涉及两种类型的运算,两个值会被分别转换成两种类型的更高级别。
  3. 类型的级别从高至低依次是long double、double、float、unsigned long long、long long、unsigned long、long、unsigned int、int。例外的情况是,当long 和 int 的大小相同时,unsigned int比long的级别高。之所以short和char类型没有列出,是因为它们已经被升级到int或unsigned int。
  4. 在赋值表达式语句中,计算的最终结果会被转换成被赋值变量的类型。这个过程可能导致类型升级或降级(demotion)。所谓降级,是指把一种类型转换成更低级别的类型。
  5. 当作为函数参数传递时,char和short被转换成int,float被转换成double。
待赋值的值与目标类型不匹配时的规则
  1. 目标类型是无符号整型,且待赋的值是整数时,额外的位将被忽略。例如,如果目标类型是 8 位unsigned char,待赋的值是原始值求模256。
  2. 如果目标类型是一个有符号整型,且待赋的值是整数,结果因实现而异。
  3. 如果目标类型是一个整型,且待赋的值是浮点数,该行为是未定义的。
强制类型转换运算符
mice = (int)1.2+(int)2.3

带参数的函数

#include<stdio.h>
void pound(int n); int main(void)
{
int times = 5;
char ch = '!';
float f = 6.0f;
pound(times);
pound(ch);
pound(f);
system("pause");
return 0;
} void pound(int n) //函数声明
{
while (n-- > 0)
printf("#");
printf("\n");
}

C语言之运算符、表达式和语句的更多相关文章

  1. PHP语句【变量、运算符表达式、语句】

    一.变量的方法.1.empty可以用empty的方法能够判断变量的值是不是为空.①如果我们看一下某一个变量是不是已经存在过了假如我们输出一下 var_dump (empty($a)); 返回值为tru ...

  2. c语言(3)--运算符&表达式&语句

    计算机的本职工作是进行一系列的运算,C语言为不同的运算提供了不同的运算符! 1.那些运算符们 .基本运算符 算术运算符:+ - * /  % ++ -- 赋值运算符:= 逗号运算符:, 关系运算符:& ...

  3. C Primer Plus学习笔记(四)- 运算符、表达式和语句

    基本运算符 赋值运算符:= 在C语言中,=不是“相等”,而是赋值运算符,把左边的值赋给右边的变量 a = 2018; //把值2018赋给变量a 赋值表达式语句的目的是把值储存到内存位置上,用于储存值 ...

  4. C语言基础课程 第四课 它山之石可以攻玉---C语言数据类型和表达式

     1         C语言中的数据类型 1.1      常量 常量就是在程序中不可变化的量 1.1.1         #define #define MAX 10 Define;//定义了一 ...

  5. Java代码三级跳——表达式、语句和代码块

    Java代码三级跳—表达式.语句和代码块 表达式(expression):Java中最基本的一个运算.比如一个加法运算表达式.1+2是一个表达式,a+b也是. 语句(statement):类似于平时说 ...

  6. C Primer Plus_第5章_运算符、表达式和语句_编程练习

    Practice 1. 输入分钟输出对应的小时和分钟. #include #define MIN_PER_H 60 int main(void) { int mins, hours, minutes; ...

  7. Java基础知识笔记第三章:运算符表达式语句

    算术运算符与表达式 操作符 描述 例子 + 加法 - 相加运算符两侧的值 A + B 等于 30 - 减法 - 左操作数减去右操作数 A – B 等于 -10 * 乘法 - 相乘操作符两侧的值 A * ...

  8. 【.net 深呼吸】细说CodeDom(2):表达式、语句

    在上一篇文章中,老周厚着脸皮给大伙介绍了代码文档的基本结构,以及一些代码对象与CodeDom类型的对应关系. 在评论中老周看到有朋友提到了 Emit,那老周就顺便提一下.严格上说,Emit并不是针对代 ...

  9. 速战速决 (1) - PHP: 概述, 常量, 变量, 运算符, 表达式, 控制语句

    [源码下载] 速战速决 (1) - PHP: 概述, 常量, 变量, 运算符, 表达式, 控制语句 作者:webabcd 介绍速战速决 之 PHP 概述 常量 变量 运算符 表达式 控制语句 示例1. ...

随机推荐

  1. CentOS6.5内 MySQL5.7.19编译安装

    作为博主这样的Linux菜鸟,CentOS下最喜欢的就是yum安装.但有时候因为特殊情况(例如被墙等),某些软件可能没办法直接通过yum来安装,这时候我们可以使用编译安装或者直接二进制文件安装. 本博 ...

  2. EOS智能合约开发(三):EOS创建和管理账号

    没有看前面文章的小伙伴可以看一下 EOS智能合约开发(一):EOS环境搭建和启动节点 EOS智能合约开发(二):EOS创建和管理钱包 创建好钱包.密钥之后,接下来你就可以创建账号了,账号是什么?账号保 ...

  3. c/c++ 模板与STL小例子系列<二> 模板类与友元函数

    c/c++ 模板与STL小例子系列 模板类与友元函数 比如某个类是个模板类D,有个需求是需要重载D的operator<<函数,这时就需要用到友元. 实现这样的友元需要3个必要步骤 1,在模 ...

  4. js获取当前页面url网址信息

    js如何准确获取当前页面url网址信息 在WEB开发中,时常会用到javascript来获取当前页面的url网址信息,在这里是我的一些获取url信息的小总结. 下面我们举例一个URL,然后获得它的各个 ...

  5. JavaScript闭包理解【关键字:普通函数、变量访问作用域、闭包、解决获取元素标签索引】

        一.闭包(Closure)模糊概述 之前总觉得闭包(Closure)很抽象而且难理解,百度一下"闭包"名词,百度的解释是:“闭包是指可以包含自由(未绑定到特定对象)变量的代 ...

  6. 早期nginx tcp代理(基于patch实现)

    nginx tcp代理功能由nginx_tcp_proxy_module模块提供,同时监测后端主机状态.该模块包括的模块有: ngx_tcp_module, ngx_tcp_core_module, ...

  7. Spring Boot 中文乱码问题解决方案汇总

    使用 Spring Boot 开发,对外开发接口供调用,传入参数中有中文,出现中文乱码,查了好多资料,总结解决方法如下: 第一步,约定传参编码格式 不管是使用httpclient,还是okhttp,都 ...

  8. [HEOI2015]小Z的房间 && [CQOI2018]社交网络

    今天看了一下矩阵树定理,然后学了一下\(O(n ^ 3)\)的方法求行列式. 哦对了,所有的证明我都没看-- 这位大佬讲的好呀: [学习笔记]高斯消元.行列式.Matrix-Tree 矩阵树定理 关于 ...

  9. P2802 回家 (DFS+剪枝)

    这里详细讲一下剪枝的点: 因为,可以重复在同一个点上走动.所以,这个步数是无穷的. 剪枝一:步数< n*m;    (因为起点不算所以不取等号) 剪枝二:步数当大于已有的答案时,直接退出DFS, ...

  10. PHP 2 语句 数据类型 字符串函数 常量

    在 PHP 中,有两种基本的输出方法:echo 和 print. 在本教程中,我们几乎在每个例子中都会用到 echo 和 print.因此,本节为您讲解更多关于这两条输出语句的知识. PHP echo ...