C语言-数据类型与表达式

#C语言符号

##注释(Comment)
注释是对程序代码或功能的说明和解释
注释用/*和*/包含起来,可以多行注释
在C++风格中,双斜线//进行单行注释
在C语言编译器中,对注释完全忽略

下面是两种风格的举例
  #include <stdio.h> 
  int main()
  /*autor:Vampire
  time:2020/02/19*/
  {
		printf("hello world\n"); //output:hello world
		return 0;
}

##标识符(Identifier)
###预定义标识符

1.数据类型关键字(12个):

(1) char :声明字符型变量或函数 

(2) double :声明双精度变量或函数 

(3) enum :声明枚举类型 

(4) float:声明浮点型变量或函数 

(5) int: 声明整型变量或函数 

(6) long :声明长整型变量或函数 

(7) short :声明短整型变量或函数 

(8) signed:声明有符号类型变量或函数 

(9) struct:声明结构体变量或函数 

(10) union:声明共用体(联合)数据类型 

(11) unsigned:声明无符号类型变量或函数 

(12) void :声明函数无返回值或无参数,声明无类型指针(基本上就这三个作用)

2.控制语句关键字(12个):

A循环语句

(1) for:一种循环语句(可意会不可言传) 

(2) do :循环语句的循环体 

(3) while :循环语句的循环条件 

(4) break:跳出当前循环 

(5) continue:结束当前循环,开始下一轮循环 

B条件语句 

(1)if: 条件语句 

(2)else :条件语句否定分支(与 if 连用) 

(3)goto:无条件跳转语句 

C开关语句 

(1)switch :用于开关语句 

(2)case:开关语句分支 

(3)default:开关语句中的“其他”分支 

D返回语句

return :子程序返回语句(可以带参数,也看不带参数)

3.存储类型关键字(4个)

(1)auto :声明自动变量 一般不使用 

(2)extern:声明变量是在其他文件正声明(也可以看做是引用变量) 

(3)register:声明积存器变量 

(4)static :声明静态变量

4.其它关键字(4个):

(1)const :声明只读变量 

(2)sizeof:计算数据类型长度 

(3)typedef:用以给数据类型取别名(当然还有其他作用 

(4)volatile:说明变量在程序执行中可被隐含地改变

##用户自定义标识符

	常量
	变量
	函数名
	......

## 分隔符(Separator)

  空格、回车、换行、逗号等。
 #include <stdio.h> 
  int main()
  {
		printf("hello world\n"); //此处分号为分隔符
		return 0;
}

##符合语句标记

标记函数、语句块
 #include <stdio.h> 
  int main()
  /*此代码的 { }为复合语句
  {
		printf("hello world\n"); //output:hello world
		return 0;
}

## 运算符表
在这里插入图片描述
#C语言数据类型

#C语言常数与变量
##整型常量

三种不同的数制
-----------------------------------------
十进制         八进制          十六进制
  65			0101			0x41
 125			0175			0x7d
-----------------------------------------

##浮点数常量

小数形式:0.0 31415926;
指数形式:3.1415926e-2;3.1415926E-2

##字符常量
字符常量是指用单引号括起来的一个字符;
字符对应ASCII码值存储,占一个字节。例如“a↔97,A↔65”。

##字符串常量
字符串常量是用双引号括起来的一串字符;
在内存中存储时,末尾自动加NULL或\0(ASCII码值为0).

##转义字符
不可打印或具有特殊用途的字符。在这里插入图片描述

##符号常量

注意大写、无分号!!!
#define     PI   3.1415926
#define    TRUE  1

#基本运算
##双目运算

加       a+b     9+8=17
减       a-b	 9-8=1
乘       a*b     9*8=72
除       a/b	 9/8=1
          		 9.0/8=1.125
取余     a%b     9%8=1

##单目运算

自增        a++  	 a参与运算后,a的值再自增1
            ++a      a自增1后再参与其它运算
自减        a--		 a参与运算后,a的值再自减1
            --a		 a自减1后再参与其它运算
取负		-a          
已知 int x,y ,a=20;							已知 int x,y ,a=20;
则 x=--a;	/*a=a-1;x=1;*/					则 x=a--;  /*a=a;x=a-1;	*/	
	y=a;										y=a;
结果x=20,y=20;								结果x=20,y=19;

##赋值运算

   变量=表达式;例x=5*4; 
   也可以嵌套,x=(y=(z=100)),相当于x=100;y=100;z=100;
   a+=b    等效为   a=a+b
   a-=b    等效为   a=a-b
   a*=b    等效为   a=a*b
   a/=b    等效为   a=a/b
   a%=b    等效为   a=a%b
      


设x=20;x*=10+2;x=?
x=x*(10+2)
x=x*10+2   
*算数运算符*优先级高于*算数赋值运算符*

##关系运算与逻辑运算
关系表达式的值为,用1 或非零数值表示,关系表达式的值为

关系运算符:
大于       a>b       大于等于      a>=b
小于       a<b		 小于等于     a<=b
等于	   a=b 		 不等于		  a!=b
逻辑运算
逻辑与        a && b
逻辑或        a || b
逻辑非         !a

##位运算

位逻辑运算
按位与        a&b     相同为1则为1
按位或        a|b     见11
按位异或      a^b     不同为1 
按位反        ~a      1001
------------------
位移运算(变量一端被移出弃,另一端则以0填充)
右位移        a>>4    每右移N位相当于除以2的N次幂
左位移        a<<2    每左移N位相当于乘以2的N次幂

##其它运算
###三目条件运算

X ?Y : Z
若X为真,则整个表达式的结果为Y,否则整个表达式为Z。‘

###逗号结合运算
表达式1,表达式2,表达式3…表达式n
先求解表达式1,在求解表达式2,最后求解表达式n,整个逗号表达式的值为表达式n的值。
例如:X=(a=10,b=100,c=1000); X的值为1000;

###长度运算

例如:double dx;
     sizeof(dx)=8;
     sizeof(double)=8;

#优先级与结合性
单目运算符的优先级高于双面运算符,双目运算符的优先级高于三目运算符;
在双目运算符中,算数运算符高于关系运算符,关系运算符高于逻辑运算符;
在位运算符中,移位运算符高于关系运算符,逻辑运算符低于关系运算符;

##自动类型转换
相同类型数据的运算结果,还是该类型;
不同类型数据的运算结果,取决于范围大的那个;
取值范围大的类型赋值给取值范围小的是不安全的,会存在丢失小数部分

long double >double>float>long>int>short>char

##数据输入输出
###格式输出函数-printf
printf(“控制字符串”,输出项列表);

%c      字符型输出
%d      十进制输出
%u      无符号输出
%f      浮点型小数输出
%o      八进制输出
%X      十六进制输出
%s      字符串输出

####字符宽度
%5d表示字符宽度位4个字节显示一个整数

设i=123printf("%5d\n",i);	         output:___123
printf("%05d\n",i);          output:000123

设j=1234.567printf("%9.3f\n",j);         output:_1234.567
printf("%-9.3d\n",j);        output:1234.567_  // 有负号为左对齐,否则为右对齐

printf("%*d\n",5,j);		 output:_123
printf("%*d\n",w,j);         output:以W宽度显示
printf("%*.*f\n",j);         output:1234.56

普通字符
可打印字符-直接写出字符

i=4printf("num=%d",i);          output:num=4

不可打印字符-转义字符

printf("%f%%\n",99.9);       output:99.9%

###字符输出函数-putchar
将一个字符输出在显示屏上,参数可以是字符变量、字符常量、字符ASCII码。
输入输出函数被包含在"stdio.h",使用这些函数时,需要预处理命令。
#include “stdio.h” 但printf和 scanf可省略。

putchar('A');                output:A
putchar(97);                 output:a
********************************************
a='!';
putchar('a');                output:!

###格式输入函数-scanf
scanf("控制字符串”,输入项列标);

字符*输入时,跳过其相应的数据
scanf("%d%d",&a,&b);
若input:12 34  则a为12 b为34

scanf("%*d%d",&a,&b);
若input:12 34  则a为12 
----------------------------------------
字符空格输入时,跳过输入流中所有空格
scanf("%d%d%c",&a,&b,&ch);
若input:12 34 i 则a为12,b为34,ch为空格

scanf("%d%d  %c",&a,&b,&ch);
若input:12 34 i 则a为12,b为34,ch为i
----------------------------------------
可打印字符输入时,去除输入流中所有与可打印字符相同的字符
scanf("%d,%d,%c",&a,&b,&ch);
若input:12,34,i 则a为12,b为34,ch为i

###字符输入函数-getchar
getchar() 无参数,只能接受一个字符
从键盘上输入一个可打印字符,函数的返回值为该字符的ASCII码。
使用时,通常将其值赋予某个字符变量或整型变量。

example
#include "stdio.h"
main()
{
	char c;
	c=getchar();      putchar(c);
	c=005;      putchar(c);   putchar(005);
	
}

例:输入一个字符,输出其前后和呗字符

#include "stdio.h"
main()
{
	char c;
	int c1,c2;
	c=getchar();     
	c1=c-1;  c2=c+1;
	printf("%c %c %c\n",c1,c,c2);
	printf("%d %d %d\n",c1,c,c2);
}
----------------------------------------------
if   input:B
then output:A B C
            65 66 67
发布了4 篇原创文章 · 获赞 1 · 访问量 164

猜你喜欢

转载自blog.csdn.net/qq_44189457/article/details/104398176