单目操作符++ 可分为前置++和后置++ 1、前置++,变量先++(一般情况下+1)完以后再运算 2、后置++,变量先运算完以后再++(一般情况下+1)
单目操作符--
?可分为前置–和后置– ? ? ? 1、前置- -,变量先- -(一般情况下-1)完以后再运算 ? ? ? 2、后置- -,变量先运算完以后再- -(一般情况下-1) 算数操作符
- 加、减、乘很简单,和平常数学中运算规则相同。
- /(除)这个操作符需要注意的是:除的时候如果’/’两边只要有(一个或两个)浮点数,采用的是浮点型除法,若’/’两边都是整型,则采用的是整型除法。
- %这个操作符两边的数只能是整数,它返回的是整除之后的余数
移位操作符
移位操作符作用的对象是一个数的补码; ? ? 1.对于左移:左边抛弃,右边补0; ? ? 2.对于右移:右边抛弃,左边补原来的符号位(采用算术移位); ? ? 3.对于’>>’操作符,分为两种移位规则:一种逻辑移位,另一种是算术移位, ? ? 4.a.逻辑移位规则是右边抛弃,左边最高位直接补0,不考虑之前数的符号位。 ? ? ? ?b.算术移位规则是右边抛弃,左边最高位补和之前数相同的符号位。而目前编译器通常采用的是算术移位规则。 赋值操作符
?复合操作符
用复合操作符可以使代码更简洁?
单目操作符
1. sizeof操作符计算的是变量(类型)所占空间的大小,是按字节来计算,重要的是,sizeof (a+b)里面的表达式不参与计算,若a,b都是int行类型,其结果依然是4; 2. 当数组作为参数为函数传参时,由于数组要发生降级,其会降级为一个指针,如果此时在一个函数中sizeof计算数组的大小是不可以的,其计算的是数组降级为指针的大小(4个字节),所以,若函数要得到一个数组的大小,应该在主函数中计算。 3. 对于前置++或 - -,先操作,再使用,对于后置++或 - -,先使用,再操作。 关系操作符
这些关系操作符,比较简单,不多说,但需要注意,不要将等于(==)写成赋值操作(=)。
?逻辑操作符
不同与按位与和按位或。
条件操作符
1.常见关键字
char 声明字符型变量 1
short 声明短整型变量 2
int 声明整型变量 4
long 声明长整型变量 4
double 声明双精度变量 4
float 声明单精度变量 8
signed 声明有符号类型变量
unsigned 声明无符号类型变量
struct 声明结构体变量
union 声明联合类型
enum 声明枚举类型
switch 用于开关语句
case 开关语句分支
default 开关语句中的“其他”分支
auto 声明自动变量,缺省时编译器默认为此
const 声明只读变量
static 声明静态变量
register 声明寄存器变量
volatile 说明变量在程序执行中可被隐含的改变
typedef 用于给数据类型重命名
extern 声明变量是在其他文件正声明(也可以看做是引用变量)
return 子程序返回语句(可以带参数,也可不带参数)
void 声明函数无返回值或无参数,声明空类型指针
sizeof 计算对象所占内存空间大小
break 跳出当前循环
continue 结束当前循环,开始下一轮循环
do 循环语句的循环体
while 循环语句的循环条件
if 条件语句
else 条件语句否定分支(与 if 连用)
for 一种循环语句(可意会不可言传)
goto 无条件跳转语句
2.常用语句
- <1> if ? ? ?语句
- //非0为真 0为假
- //如果表达式的结果为真,则语句1执行,否则表达式2行。
- //可嵌套使用。else可悬空。
- 例:
- if(表达式)
- ? ? 语句1;
- else
- ? ? 语句2;
- ----------------------------------------------
- ***拓展: 浮点数的比较 指针的比较?
- ----------------------------------------------
- <2> switch ?语句
- //switch语句也是一种分支语句。常常用于多分支的情况。可嵌套。
- //switch case default 常常连用
- //当 switch表达式的值并不匹配所有case标签的值时,这个default子句后面的语句就会执行。所以,每个switch语句中只能出现一条default子句。
- 例:
- #include <stdio.h>
- int main()
- ?{
- ? ?int day = 0;
- ? ?switch(day) //星期
- ? ?{
- ? ? ?case 1:
- ? ? ?case 2:
- ? ? ?case 3:
- ? ? ?case 4:
- ? ? ?case 5:
- ? ? ? ? ? ? printf("学习时间\n");
- ? ? ? ? ? ? break;
- ? ? default:
- ? ? ? ? ? ? printf("周末休息\n");
- ? ? ? ? ? ? break;
- ? }
- ? ? return 0;
- --------------------------------------------
- <3> goto ? ?语句
- //最常见的用法就是终止程序在某些深度嵌套的结构的处理过程,例如一次跳出两层或多层循环。这种情况使用break是达不到目的的。break只能从最内层循环退出到上一层的循环。
- //还可以实现循环 不建议使用 其打破原有的程序语句顺序 不易优化
- <4> 循环语句
- ******for******
- //for(表达式1;表达式2;表达式3)
- //循环语句;
- **表达式1为初始化部分,用于初始化循环变量的。
- **表达式2为条件判断部分,用于判断循环时候终止。
- **表达式3为调整部分,用于循环条件的调整。
- 例:
- #include <stdio.h>
- int main()
- {
- ? ?int i = 0;
- ? ?for(i=1; i<=10; i++)
- ? ?{
- ? ? ?printf("%d ",i);
- ? ?}
- ? ?return 0;
- }
- ******while******
- //while(表达式)
- //循环语句;
- 例:
- #include <stdio.h>
- int main()
- ?{
- ? ?int i = 1;
- ? ?while(i<=10)
- ? ? {
- ? ? ? printf("%d ", i);
- ? ? ? i = i+1;
- ? ? }
- ? ?return 0;
- }
- ******do--while******
- //do
- //循环语句;
- //while(表达式)
- 例:
- #include <stdio.h>
- int main()
- {
- ? ? int i = 10;
- ? ? do
- ? ? ?{
- ? ? ? printf("%d\n", i);
- ? ? ?}while(i<10);
- ? ? return 0;
- }
附学习代码
?
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
/*
int main()
{
printf(" **\n");
printf(" **\n");
printf("************\n");
printf("************\n");
printf(" * *\n");
printf(" * *\n");
return 0;
}
*/
int main()
{
printf(" ** \n");
printf(" ** \n");
printf("************\n");
printf("************\n");
printf(" * * \n");
printf(" * * \n");
return 0;
}
#include <stdio.h>
int main()
{
//输入
int x = 0;
int y = 0;
scanf("%d", &x);
//计算
if (x < 0)
y = 1;
else if (x == 0)
y = 0;
else
y = -1;
//输出
printf("%d\n", y);
return 0;
}
#include <stdio.h>
int main()
{
int m = 0;
//输入
scanf("%d", &m);
//输出
if (m % 5 == 0)
printf("YES\n");
else
printf("NO\n");
return 0;
}
#include <stdio.h>
//
//scanf函数在调用失败的时候,读取失败的时候,会返回EOF
//EOF -- end of file
//
int main()
{
//输入
int iq = 0;
while (scanf("%d", &iq) != EOF)
{
if (iq >= 140)
{
printf("Genius\n");
}
}
return 0;
}
#include <stdio.h>
int main()
{
printf("Name Age Gender\n");
printf("---------------------\n");
printf("Jack 18 man\n");
return 0;
}
#include <stdio.h>
int main()
{
int a = 0;
int b = 0;
//输入
scanf("%d %d", &a, &b);
//输出
printf("%d %d\n", a / b, a % b);
return 0;
}
#include <stdio.h>
int main()
{
int a = 40;
int c = 212;
//int ret = (-8+22)*a-10+c/2;
printf("%d\n", (-8 + 22) * a - 10 + c / 2);
return 0;
}
//void test()
//{
// int b = 0;
//
//}
//
//int main()
//{
// int a = 10;
//
// return 0;
//}
#include <stdio.h>
//int num = 10;
//
//int main()
//{
// int num = 1;
// printf("num = %d\n", num);//1
// return 0;
//}
//int main()
//{
// printf("abc\0def");
// return 0;
//}
//int main()
//{
// int arr[] = {1,2,3,4,5};
// int a = 0;
//
// return 0;
//}
//#include <stdio.h>
//#include <string.h>
//int main()
//{
// printf("%d\n", strlen("c:\test\121"));
// return 0;
//}
#include <stdio.h>
#include <string.h>
//
//int main()
//{
// char arr[] = { 'b', 'i', 't' };
// printf("%d\n", strlen(arr));
// return 0;
//}
//
//
//int get_max(int x, int y)
//{
// if (x > y)
// return x;
// else
// return y;
//}
//
//int main()
//{
// int n1 = 0;
// int n2 = 0;
// //输入
// scanf("%d %d", &n1, &n2);
// //求2个整数的较大值
// int m = get_max(n1, n2);
// //输出
// printf("%d\n", m);
//
// return 0;
//}
//
//int main()
//{
// //C语言中,0表示假,非0表示真
// //int flag = 5;
// //if (!flag)
// //{
// // printf("hehe\n");
// //}
// //int a = -10;
// //int b = +a;
// //printf("%d\n", b);
//
// //int a = 10;
// //printf("%d\n", sizeof(a));//单位是字节
// //printf("%d\n", sizeof(int));
//
//
// //int a = 10;
// //int b = a + 1;
// //int b = ++a;//前置++,先++,后使用//a = a+1; b=a;
// //int b = a++;//后置++,先使用,后++ //int b = a;a=a+1;
//
// //int b = --a;//a=a-1;b=a;
// //int b = a--;//b=a;a=a-1
//
// //printf("a=%d b=%d\n", a, b);//9 10
//
// //int a = 1;
// //int b = (++a) + (++a) + (++a);//错误的代码
// //printf("%d\n", b);
//
// return 0;
//}
//int main()
//{
// int a = (int)3.14;
// printf("%d\n", a);
//
// return 0;
//}
//int main()
//{
// int a = 10;
// if (a >= 10)
// {
// printf("hehe\n");
// }
// return 0;
//}
//int main()
//{
// int a = 5;
// if (5 = a)
// {
// printf("hehe\n");
// }
// return 0;
//}
//
//int main()
//{
// int a = 5;
// int b = 5;
// if ((a == 3) || (b == 4))//或者
// {
// printf("hehe\n");
// }
//
// //if ((a == 3) && (b == 4))//并且
// //{
// // printf("hehe\n");
// //}
// return 0;
//}
//int main()
//{
// int a = 3;
// int b = 5;
// int m = 0;
//
// if (a > b)
// m = a;
// else
// m = b;
//
// //m = (a > b) ? (a) : (b);
//
// printf("%d\n", m);
// return 0;
//}
//调试开始 - f10
//fn+f10
//int main()
//{
// int a = 3;
// int b = 20;
// int c = 0;
// int d = (a -= 3, b += a, c = a - b, b = a - 4);
// printf("d=%d\n", d);
// return 0;
//}
//int main()
//{
// int arr[10] = { 0 };
// //0~9
// arr[5] = 9;//[] - 下标引用操作符,他的操作数:数组名,下标
//
// return 0;
//}
//int get_max(int x, int y)
//{
// if (x > y)
// return x;
// else
// return y;
//}
//
//int main()
//{
// int m = get_max(3, 5);//()函数调用操作符,他的操作数是:函数名,3,5
//
// return 0;
//}
//
//
//int main()
//{
// {
// int a = 10;
// //
// }
//
// return 0;
//}
//unsigned int num = 10;
//
//typedef unsigned int uint;
//
//uint num2 = 10;
//
//int main()
//{
// int num = 10;//4个字节
// register int num2 = 20;//建议将20放在寄存器中
//
// return 0;
//}
//static修饰局部变量
//void test()
//{
// static int a = 5;
// a++;
// printf("%d ", a);
//}
//
//int main()
//{
// int i = 0;
// while (i<10)
// {
// test();
// i++;
// }
//
// return 0;
//}
?
|