Skip to content

Latest commit

 

History

History
197 lines (113 loc) · 10.5 KB

2019-01-26-c-sequence-structure.md

File metadata and controls

197 lines (113 loc) · 10.5 KB
layout title date categories tags excerpt
post
运算符表达式与函数
2019-01-26 09:21:55 +0800
notes c basic
C 基础 数据类型 const 输入输出 printf scanf putchar getchar
运算符表达式与函数

数据表现与类型

 常量与变量

  1.常量

指不能改变的量。

  1. 整型常量,即整数。
  2. 实型常量,即小数,包括十进制小数形式(1.35……)和指数形式(12.34e3=12.34*10^3……注意:e前必须有数字且e后必须为整数,不能为e4或12e3.4)。
  3. 字符常量,包括普通字符,只是一个字符,由单撇号包裹(’g’)和转义字符,以\开头(\’,\’’,\,\a警告,\b退格,\f换页,\n换行,\r回车,\t水平指标,\v垂直制表,\o,\oo,\ooo与该八进制码对应的ASCII码,\xh与该十六进制码对应的ASCII码)。
  4. 字符串常量,由双撇号括起来(“jinjianxing”)。
  5. 符号常量,由#define定义,在程序开头,格式:#define 符号 常量(#define PI 3.14)注意后面没有分号。

  2.变量

一个有名字,具有特定属性的一个存储单元,用来存放数据,先定义再使用。

  3.常变量

使用const关键字,如const int a=3;

有类型,占存储单元但是不能改变值。

符号常量是用#define命令。仅用字符代替数值,在编译后符号常量就不存在了,而常变量是占存储单元,不会消失。

  4.标识符

仅能有字母数字和下划线组成,且开头不能是数字,分大小写。

 数据类型

  基本类型

分为整型类型和浮点类型。

整型类型分为:基本整型(int)、短整型(short int)、长整型(long int)、双长整型(long long int)、字符型(char)、布尔型(bool)。

其中int类型的都可以加上unsigned修饰符来表示无符号,从而取值范围扩大到原来的两倍。

而浮点类型则包括:单精度浮点型(float)、双精度浮点型(double)、复数浮点型(float_complex,double_complex,long long complex)。

  枚举类型与空类型

空类型比较常见,就是单纯的无,使用void表示。

枚举类型就如集合,使用enum来表示。

  派生类型

包括:指针类型(*)、数组类型([])、结构体类型(struct)、共用体类型(union)、函数类型(function)。

算术运算符

正号或加法运算符:+ 负号或减法运算符:- 乘法运算符:* 除法运算符:/ 求余(模)运算符:% 自加运算符:++ 自减运算符:--

使用除法运算时,如果两实数相除为双精度小数,两整数相除结果为整数(5/3=1)。

负数运算向0取整。

模运算的数应该为整数,不能为小数,如果进行有负数参与的运算,结果符号取决与被模数的符号。

除了模运算以外的所有的运算符的操作数都可以为任何算术类型。

强制类型转换运算符

(类型名)(表达式)

eg:(int)x+y将x强行转化为整型,再与y相加。

(int)(x+y)将xy相加,再强行化为整型。

赋值运算符与赋值语句

 1.赋值运算符

赋值:= 复合赋值运算符:在=前加其他运算符 如+=、-=、*=、/=、%=。

 2.赋值表达式

格式:左值 赋值运算符 右值

左值为地址,右值可以为数据值也可以为地址。

 3.赋值转化

如果赋值运算两侧的类型一致,则直接进行赋值,如果类型不一致,但是都是基本类型,就要类型转换,由系统完成。①浮点型数据赋给整型数据时,先对浮点数取整,舍弃小数部分,然后赋予(即不四舍五入)②将整型数据赋给浮点型的时候数值不变,但是转为浮点型③将双精度型赋给单精度型,先将双精度转为单精度,即仅取6~7位有效数字,并且注意数值范围不能超过:单精度赋给双精度数值不变,有效数位扩展④字符型数据赋给整型就将其ASCII码赋给整形变量⑤占位多的整型数据赋给占位少的整型数据(如long赋给short)就会将低字节赋值,截断高位次数据。

 4.赋值语句

赋值语句和赋值表达式的区别:赋值语句比赋值表达式多了一个分号。

数据格式输入输出语句

 1.数据输入输出说明

C语言本身不提供输入输出语句,由C标准函数库中的函数实现,要使用就要在文件开头用预处理指令#include把有关文件放入程序。

说明: #include指令还有一种形式,头文件不是用尖括号括起来,而是用双撇号,如: # include "stdio, h"

这两种#include指令形式的区别是:用尖括号形式(如<stdio.h>)时,编译系统从存放C编译系统的子目录中去找所要包含的文件(如stdio. h),这称为标准方式。如果用双撇号形式(如"stdio.h"),在编译时,编译系统先在用户的当前目录(一般是用户存放源程序文件的子目录)中寻找要包含的文件,若找不到,再按标准方式查找。如果用#include指令是为了使用系统库函数,因而要包含系统提供的相应头文件,这时以用标准方式为宜,以提高效率。如果用户想包含的头文件不是系统提供的相应头文件,而是用户自己编写的文件(这种文件一般都存放在用户当前目录中),这时应当用双据号形式,否则会找不到所需的文件。如果该头文件不在当前目录中,可以在双撇号中写出文件路径(如# include "C:\temp\filel, h"),以便系统能从中找到所需的文件。

 2.格式输入输出字符

  格式字符

  • d,i:以带符号的十进制形式输出输入整数(正数不输出输入符号)。
  • o:以八进制无符号形式输出输入整数(不输出前导符0)。
  • x, X:十六进制无符号形式输出输入整数(不输出前导符0x),用x则输出输入十六进制数的a~f时以小写形式输出输入,用X时,则以大写字母输出输入。
  • u:以以无符号十进制形式输出输入整数。
  • c:以字符形式输出输入,只输出输入一个字符,在输入字符时中间不应该有空格。
  • s:输出输入字符串,输入字符串时将其送入一个字符数组中,在输入时以非空白字符开始,以第一个空白字符结束。字符串以字符串结束标志’\0’作为其最后一个字符。
  • f:以小数形式输出单、双精度数,隐含输出6位小数,输入使用,可以用小数或指数形式输入。
  • e,E:以指数形式输出实数,用e时指数以“e”表示(如1. 2e+02),用E时指数以“E"表示(如1.2E+02)输入与f,g相同效果。
  • g,G:选用%f或%e格式中输出宽度较短的-种格式,不输出无意义的0。用G时,若以指数形式输出,则指数以大写表示,输入与f,e相同效果。

  附加字符

在格式声明中,在%和上述格式字符间可以插入几种附加符号(又称修符)

  • l:输出输入长整型整数,输出可加在格式符d.o.x.u前面,输入可加在格式符d.o.x.u.f.e前面
  • h:输入短整型数据,可加在d.o.x前面
  • m(代表一个正整数):输出数据最小宽度
  • n(代表一个正整数):对实数表示输出n位小数;对字符串,表示截取的字符个数
  • -:输出的数字或字符在域内向左靠
  • *:本输入项在读入后不赋给相应变量

 3.格式输出函数(printf())

一般格式:printf(格式控制,输出列表)

格式控制时用双撇号括起来的字符串,称为格式控制字符串,简称格式字符串,包括两个信息:①格式声明:由“%”和附加字符与格式字符组成②普通字符:即选要在输出时原样输出的字符。

 4.格式输入函数(scanf())

一般格式:printf(格式控制,输出列表)

格式控制时用双撇号括起来的字符串,称为格式控制字符串,简称格式字符串,包括两个信息:①格式声明:由“%”和附加字符与格式字符组成②普通字符:即选要在输出时原样输出的字符。

使用注意:

  1. scanf函数中的格式控制后面应该是变量地址,而不是变量名。如普通变量就是 &变量名 ,而数组就是变量名的格式,因为一般变量需要使用&取地址符来取地址,而数组名本身就是代表数组首元素地址。
  2. 需要严格按照格式控制字符串中的格式,如果字符以,间隔,就必须在字符间以,隔开
  3. 由于%c会将空格字符和转移字符中的字符都作为有效字符输入,如%c%c%c输入时,就不应该有空格,否则就把空格输入了。
  4. 而相反输入数值就需要空格,系统能自动分辨。
  5. 输入数值字符时,如果遇到空格,回车,tab键或者非数值字符,将自动认为该数据结束。如%d%c%f <<<<<1234a123o.6 本来应该是输入1230.6,但是不小心输入了字母,由于字母o不是数值,是非法字符,所以就从此截断,后面的数值也不能输入了。

 5.字符输出函数(putchar())

可以输出一个字符。

格式:putchar(字符串)

也可以输出屏幕控制字符如\n。

由于字符类型也是整数类型,所以可以输入0到127的数字,来打印相应的ASCII码。

 6.字符输入函数(getchar())

可以输入一个字符。

格式:getchar()

这个函数只能接受一个字符输入,且没有参数传入。

一般采取:变量名 = getchar()来使用。

一般连续输入时尽量不要在字符间换行,因为换行符也可能输入到其中。

在键盘输入的时候并不是由键盘上敲一个字符,该字符就立刻传入到电脑中,而是先寄存到键盘缓冲器中,按下回车才会一同输入。

也可以使用putchar(getchar())的方式直接输入输出。

逗号运算符与逗号表达式

,一般用来分隔表达式,一般也表示连续的作用,如int a,b,c;就代表abc全为整型。

以逗号分隔的一系列代码为逗号表达式,该逗号表达式的值为最后一个表达式的值,如:x=3,y=5-1,z=5*3;该表达式的值就是最后一个,即15。