C语言-运算符,变量,常量

目录

【1】运算符

【2】变量

【3】常量

【4】输入输出

任务:


【1】运算符

1.算术运算符

+	-	*	/	%	++	--
/:整数相除,向下取整
int a = 5/2;  	// a=2;
float b = 5/2;	// b = 2.000000
float c = 5/2.0;// c=2.500000
%:只能用于整数运算
10%3  == 1
    
123
百位:123/100==1
十位:123/10%10==2
个位:123%10==3

++:运算时注意++前后位置,来判断先运算还是先取值
a++或++a:  ==  a=a+1
    
情形一:
赋值运算:
int a=3;		//定义了一个变量a,并赋值为3
1)int b= ++a;	//4,++在前,先让a自加1,然后取a的值赋值给b
2)int b = a++;	//3,++在后,先取a的值赋值给b,然后a自加1

情形二:
打印语句:
int a = 3;
1)printf("%d\n",a++);//3   ++在后,先打印a,然后a自加
2)printf("%d\n",++a);//4   ++在前,先自加,然后打印的是自加后的a

情形三:
独立成句:
int a=3;
1)a++;				//a=a+1;
printf("%d\n",a);	//4
2)++a;				//a=a+1;
printf("%d\n",a);	//4

练习:以下程序输出结果是

#include <stdio.h>
   int main(int argc, char *argv[])
   {
   int a = 10;
   int b = a++;		//b=10,a=11
   int c = a + b;	//c=21
   int d = (b++) +c;//d=31,b=11
   printf("%d = \n",d);
   return 0;
   }

A. d = 31

B. d = 32

C. d = 33

D. d = 34

练习:以下程序输出结果是

#include <stdio.h>
   int main(int argc, char *argv[])
   {
   int a = 10;
   int b = ++a;			//b=11,a=11
   int c = a + (b++);	//c=22,b=12
   int d = b+c;			//34
   printf("%d\n",d);
   return 0;
   } 

A. d = 31

B. d = 32

C. d = 33

D. d = 34

2. 逻辑运算符

&& 	 || 	!

运算法则:

&&(逻辑与) :全真则真,一假则假

||(逻辑或) :一真则真,全假则假

!(逻辑非) :非真即假,非假即真

截断法则:

在逻辑与运算中,如果前面的表达式为假,则后面的表达式不执行

在逻辑或运算中,如果前面的表达式为真,则后面的表达式不执行

#include <stdio.h>
int main()
{
  int a=5,b=6,c=7,d=8,m=2,n=2;
  (m=a<b)||(n=c>d);
  printf("%d  %d",m,n);
}
//答案:1 2
#include <stdio.h>
int main()
{
  int a=5,b=6,c=7,d=8,m=2,n=2;
  (m=a>b)&&(n=c>d);
  printf("%d  %d",m,n);
}
//答案:0 2

3. 位运算符

&   |   ~   ^   <<   >>

&:位与
全1则1,有0则0
0xab   &  	0x3c
0xd4   &	0x3e=>0001  0100

|:位或
有1则1,全0则0

^:异或
不同为1,相同为0
0xab  ^  0x3c

~:取反
按位取反:0变1,1变0
//正数的补码和原码相同
//负数的原码取反码+1变补码
-12:
原码:1000	0000	0000	0000	0000	0000	0000	1100
反码:1111	1111	1111	1111	1111	1111	1111	0011
补码:1111	1111	1111	1111	1111	1111	1111	0100

<<:左移
向左移动几位,右边补几个0
8<<2=32

>>:右移
右移几位,左边补几个符号位
负数符号位1,正数符号位0
8>>2=2

置位问题:置零用与,置一用或
将4的1位置一     4|(1<<1)
将数a的n位置一: a|(1<<n)

将6的1位置零: 	6&(~(1<<1))
将数a的n位置零: a&(~(1<<n))

4. 关系运算符

>	<	>=	<=	==	!=

5. 赋值运算符

=	+=	-=	*=	/=	%=
a+=4    =>   a=a+4

6. 三目运算符(条件运算符)

表达式1?表达式2:表达式3
执行顺序:
先判断表达式1是否成立,
如果成立就执行表达式2,
否则执行表达式3
int  a=3;
int b = 5;
int c = a<b?a++:++b;   //c=a++;
c=?					   //3

运算符优先级:

//从高到底分别是
单目运算符 ! ~ ++ --
算术运算符 * / % + -
移位运算符 <<  >>
关系运算符 <  <=  >  >=  ==  !=
位与运算符 &
异或运算符 ^  |
逻辑运算符 &&  ||
条件运算符 ?:
赋值运算符 = += *= /= %= ...

7. 其他

分隔符:
换行    空格    TAB
标点符号:
分号  逗号    大括号  小括号   中括号

【2】变量

概念:在程序运行中其值发生变化的量

存储类型		数据类型		变量名;
        	int			b	;

数据类型

名称

字节数(32位)

取值范围

char

字符型

1

-2^7~2^7-1

short

短整型

2

-2^15~2^15-1

int

整形

4

-2^31~2^31-1

long

长整型

4

-2^31~2^31-1

float

单精度浮点型

4

有效数据位数6-7位

double

双精度浮点型

8

有效数据位数15-16位

变量的分类:局部变量与全局变量

局部变量

全局变量

定义位置

定义在函数体内部

定义在函数体外部

初值

未赋初值时为随机值

未赋初值时为0

存储位置

栈区

全局区

生命周期

随函数的结束而结束

随程序的结束而结束

作用域

作用于函数内部

作用于整个程序

【3】常量

概念:在程序运行中其值不会发生变化的量

分类:

1)字符型常量
字符:'a'   	'b'   'c'
转义字符:'\x41'  '\101'  
打印字符A:'A'	65	'\101'	'\x41' 

2)字符串常量
"hello"
字符串的末尾会补\0

3)整型常量
100	123

4)浮点型常量
3.1415926
 
5)指数常量
3*10^8   =》3e8
2*10^-2  =>2e-2

6)标识常量
宏定义:起标识作用
格式:#define 宏名  常量或表达式
一般会把宏名大写
特点:原样替换

练习:

#define N 2
#define M N+3
#define NUM N+M/2+1
void main()
{
  int a = NUM;     
  printf("%d\n",a);	//6
}

【4】输入输出

函数三要素:功能、参数、返回值

打印函数

int printf(const char *format, ...);
功能:按指定格式向终端输出
参数:format:字符串
%d		int
%c		char
%f		float
%lf		double
%s		字符串
%#x		十六进制
%#o		八进制
%p		地址
%e		指数
%u		无符号
%-m.nf	含义:
-:代表左对齐,一般默认右对齐
m:位宽:m>实际位宽,按m宽输出	m<实际位宽,按实际位宽输出
.nf :保留小数点后n位
...:不定参数
返回值:返回输出字符的个数

输入函数

 int scanf(const char *format, ...);
功能:按照指定格式输入
参数:同printf
...:变量的地址
#include<stdio.h>
int main(int argc, char const *argv[])
{
    int num;
    scanf("%d",&num);
    printf("%d\n",num);
    return 0;
}
返回值:返回正确输入数据的个数
如果第一个数据输入错误,直接返回0

任务:

用三目运算符实现两个数求最大值

#include <stdio.h>
#define BIG(A,B) ((A)>(B)?(A):(B))
int main() {
    int num1 = 10;
    int num2 = 20;
    int max = BIG(num1, num2);
    printf("The maximum number is: %d\n", max);
    return 0;
}

一个水分子的质量约为3.0*10^-23g,1夸脱水大约有950g,

编写一个程序,要求输入水的夸脱数,然后显示这么多水中包含多少水分子。 表示:3.0e-23 打印格式:%f或%e

#include <stdio.h>
int main() {
    double waterWeight = 950.0; // 每夸脱水的质量(g)
    double waterMoleculeMass = 3.0e-23; // 水分子的质量(g)
    double numQuarts; // 输入的夸脱数
    double numMolecules; // 包含的水分子数量
    // 输入夸脱数
    printf("请输入水的夸脱数:");
    scanf("%lf", &numQuarts);
    // 计算水分子数量
    numMolecules = (numQuarts * waterWeight) / waterMoleculeMass;
    // 显示结果
    printf("在%.2f夸脱水中包含的水分子数量为:%e\n", numQuarts, numMolecules);
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值