c语言之操作符

除法 /

浮点数除浮点数最后结果是浮点数

例如:a=7.0/4=1.75

但是:a=7/4=1     只有商,没有小数部分。

求模运算符%

求模运算符只能用于整数运算。

13%5=3    只有余数

sizeof是计算变量或者类型所占的空间大小,单位是字节。

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
	int a= 7;
	printf("%d\n", sizeof(a));
	printf("%d\n", sizeof(int));
   return 0;
}


移位操作符:<<   >>

<<   左移操作符

>>   右移操作符

#include<stdio.h>
int main()
{
int a=2;
b=a<<1;
printf("%d\n",b);
return 0;

}

位操作符 

&   按位与:0与1为0;

|     按位或:有1就是1;

^     按位异或:对应的二进制位相同,则为0;对应的二进制位相反,则为1;

单目操作符:有一个操作数

!:在c语言中,0为假,非零为真。

#include<stdio.h>
int main()
{
int a=10;
printf("%d\n",!a);
return 0;
}

sizeof是一个操作符,计算类型或者变量的大小。这个代码在数组里面有。

~操作符:按位取反

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	int a = 0;
	printf("%d\n", ~a);
	return 0;
}

负数在内存中存储的是二进制的补码

打印的是原码

一个整数的二进制表示有三种:原码、反码、补码

-1:原码 10000000 00000000 00000000 00000001(最高位是符号位)

原码按位取反是反码、反码加1是补码,以上是负数的计算

正整数原码、反码、补码都相同。

++;前置++,先++,后使用

一般认为前置++是先将变量的值加1,然后使用加1后的值参与运算;而后置++是先使用该值参与运算,然后再将该值加1。

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	int a = 10;
	int b = ++a;
	printf("%d\n", a);
	printf("%d\n", b);
	return 0;
}

 后置++;先使用,再++;

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	int a = 10;
	int b = a++;
	printf("%d\n", a);
	printf("%d\n", b);
	return 0;
}

(类型)强制类型转换

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	int a = (int)3.14;
	printf("%d\n", a);
	return 0;
}

 逻辑操作符:  &&逻辑与、||逻辑或

逻辑与:都为真才是真

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	int a = 5;
	int b = 3;
	int c = a && b;
	printf("%d\n", c);
	return 0;
}

 逻辑或:有一个真就是真

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	int a = 5;
	int b = 0;
	int c = a || b;
	printf("%d\n", c);
	return 0;
}

 条件操作符:exp1?exp2:exp3

条件操作符:三个表达式。

exp1成立,exp2计算,整个表达式的结构是:exp2的结果。

exp1不成立,exp3计算,整个表达式的结构是:exp3的结果。

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	int a = 5;
	int b = 0;
	int c = 0;
	c = a > b ? a : b;
	printf("%d\n", c);
	return 0;
}

逗号表达式:从左到右依次计算,整个表达式的结果是最后一个表达式的结果。

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	int a = 5;
	int b = 0;
	int c = 0;
	int d=(a=b+7,b=a-2,c=9+b);
	printf("%d\n", d);
	return 0;
}

 函数调用操作符:函数后面的();

只要是整数,内存中存储的都是二进制的补码

正数---原码 反码  补码都相同

负数:

原码                                        反码                                                                          补码

直接写出                              原码的符号位不变,其他位按位取反                      反码加1

常见的关键字:

auto  break   case  char  const   continue  default  do   double else  enum  
extern float  for   goto  if   int   long  register    return   short  signed
sizeof   static struct  switch  typedef union  unsigned   void  volatile  while
extern 用来申明外部符号
register  寄存器关键字
union 联合体(共用体)
void(空)
typedef:类型重定义,大名太麻烦,改一个小名。
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
typedef unsigned int u_int;
int main()
{
	unsigned int num = 100;
	u_int num2 = 100;
	return 0;
}

static——静态的

static修饰局部变量,改变了局部变量的生命周期。保证变量出了局部变量之后不销毁。

1.static 修饰局部变量

2.static 修饰全局变量

3. static 修饰函数

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
void test()
{
	int a = 1;
	a++;
	printf("%d\n", a);//a出函数之后,值消失。a是局部变量
}
int main()
{
	int i = 0;
	while (i < 10)
	{
		test();
		i++;
	}
	return 0;
}

 加了static之后

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
void test()
{
	 static int a = 1;
	a++;
	printf("%d\n", a);//加了static之后,a不会销毁。
}
int main()
{
	int i = 0;
	while (i < 10)
	{
		test();
		i++;
	}
	return 0;
}

 static修饰全局变量,局部变量的生命周期变长。

extern是用来声明外部符号的

 

 加了static之后

 编译无法进行

原因是static修饰全局变量,使得这个变量只能在自己所在的源文件(.c)内部使用.其他源文件不能使用;

static修饰全局函数

 加入static之后

无法编译.

static修饰函数使得函数只能在自己源文件中使用. 

#define定义常量和宏

define是预处理指令

1.定义符号

#define MAX 1000
int main ()
{
printf("%d\n",MAX);
return 0;
}

2.define定义宏

#include <stdio.h>
#define ADD(x,y) ((x)+(y))
int main()
{
printf("%d\n",4*ADD(2,3));
return 0;
}

getchar   putchar 使用方法

getchar可以接收键盘的一个字符

#include <stdio.h>
int main()
{
	int ch = getchar();
	putchar  (ch);//输出字符,和下面的printf作用一样
	printf("%c\n", ch);
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值