文章目录
1. 数据类型
每种类型的大小(单位为字节)
#include <stdio.h>
int main()
{
printf("%d\n", sizeof(char));
printf("%d\n", sizeof(short));
printf("%d\n", sizeof(int));
printf("%d\n", sizeof(long));
printf("%d\n", sizeof(long long));
printf("%d\n", sizeof(float));
printf("%d\n", sizeof(double));
printf("%d\n", sizeof(long double));
return 0;
}
结果如下:
2. 变量,常量
2.1 变量的命名
只能以字母、数字和下划线组成
不能以数字开头
长度不能超过63个字符
变量名中区分大小写
变量名中不能使用关键字
2.2 变量的分类
全局变量
局部变量
#include <stdio.h>
int a = 200;//全局变量
int main()
{
int b = 100;//局部变量
printf("%d\n", a);
printf("%d\n", b);
return 0;
}
当局部变量与全局变量同名时,局部变量优先
#include <stdio.h>
int a = 200;//全局变量
int main()
{
int a = 100;//局部变量
printf("%d\n", a);
return 0;
}
所以,在创建变量时,应避免全局变量与局部变量重名。
2.3 变量的作用域和生命周期
作用域
变量可用的代码范围叫这个变量的作用域
局部变量的作用域是变量所在局部范围
全局变量的作用域是整个工程
生命周期
变量的生命周期指的是变量创建到变量的销毁之间的时间段。
局部变量的生命周期:进入作用域生命周期开始,出作用域生命周期结束。
区局变量的生命周期:整个程序的生命周期。
2.4 常量
C语言中常量分为以下几种:
字面常量
const 修饰的常变量
#define 定义的标识符常量
枚举常量
例:
#include <stdio.h>
int main()
{
3.14;//字面常量
1000;//字面常量
#define A 100//#define 定义的标识符常量
printf("a = %d\n", A);
return 0;
}
运行结果:
const 修饰的常变量不能直接进行修改
#include <stdio.h>
int main()
{
const int a = 10;
a = 15;//不能像这样直接进行修改,程序无法运行
printf("a = %d\n", a);
return 0;
}
经 const 修饰的常变量具有常量不可修改的性质,但本质上任然是变量。
枚举常量演示:
#include <stdio.h>
enum color
{
blue,
red,
green,
white,
black
//blue,red,green,white,black是color的可能取值,是常量
//所以叫枚举常量
};
int main()
{
printf("%d\n", blue);
printf("%d\n", red);
printf("%d\n", green);
printf("%d\n", white);
printf("%d\n", black);
//枚举常量默认从0开始,依次递增
return 0;
}
结果如下:
3. 操作符
本篇文章是与大家分享一部分操作符,还有许多操作符在后期有了更深的理解后,再与大家分享。
3.1 算术操作符
+ - * / %
‘/’ 用于运算两个数相除后的商
例:
#include <stdio.h>
int main()
{
int a = 11;
int b = 4;
int c = a / b;
printf("%d\n", c);
}
结果如下:
**%**用于运算两个数相除的余数
例:
#include <stdio.h>
int main()
{
int a = 11;
int b = 4;
int c = a % b;
printf("%d\n", c);
}
如果想得到两数相除后的浮点数,那么**/**两边至少有一个浮点数
例:
#include <stdio.h>
int main()
{
float c = 10.0 / 4;
printf("%f\n", c);
}
3.2 赋值操作符
= += -= *= /= &= ^= |= <<= >>=
操作符+=
a += 1与a = a + 1的效果是一样的
同理, -= *= /= 与 += 类似。
3.3 单目操作符
sizeof 和 strlen是有区别的,sizeof计算的是变量的类型长度,单位是字节,如下代码:(32位C语言编译器)
#include <stdio.h>
int main()
{
int a = 1;
printf("%d\n", sizeof(a));
}
a 是整数类型,整数类型占四个字节,所以代码结果为 4。
strlen是库函数,是计算字符串长度的,统计的是字符串中’\0’出现之前的字符个数,如下:
#include <stdio.h>
#include <string.h>
int main()
{
char ch[] = "abcdef";
printf("%d\n", strlen(ch));
}
代码结果:
**~**在上篇文章提到过,指将二进制数按位取反,例:
a——00000001
则,
~a——11111110
前置++ 是先+1,再使用, 例:
#include <stdio.h>
int main()
{
int a = 5;
int b = ++a;
//上面这行代码与 a = a + 1; b = a; 等效
printf("%d %d", a, b);
return 0;
}
结果如下:
后置++
#include <stdio.h>
int main()
{
int a = 5;
int b = a++;
//上面这行代码与 b = a; a = a + 1; 等效
printf("%d %d", a, b);
return 0;
}
结果如下:
前置– 与 后置– 同 前置++ 后置++ 效果类似
强制类型转换
#include <stdio.h>
int main()
{
int a = (int)5.56;//只取整数部分
printf("%d\n", a);
return 0;
}
结果如下:
3.4 关系操作符
‘==’ 是测试是否相等的操作符,而 ‘=’ 是赋值符号
3.5 逻辑操作符
&& 可以理解为并且,在 && 两边必须同时为真,整个表达式才为真
|| 可以理解为或者,在 || 两边只要有一边是真,即为真
#include <stdio.h>
int main()
{
int a = 12;
if (a > 10 && a < 15)
printf("YES\n");
else
printf("NO\n");
}
此段代码 && 两边都为真,所以打印结果为:
将上面代码修改如下:
#include <stdio.h>
int main()
{
int a = 12;
if (a > 13 && a < 15)
printf("YES\n");
else
printf("NO\n");
}
此时,输出结果如下:
3.6 条件操作符
exp1 ? exp2 : exp3
例:
输出两个数中的较大数
#include <stdio.h>
int main()
{
int a = 0;
int b = 0;
scanf("%d %d", &a, &b);
if (a > b)
printf("%d\n", a);
else
printf("%d\n", b);
return 0;
}
上面这段代码与下面这段代码效果相同
#include <stdio.h>
int main()
{
int a = 0;
int b = 0;
scanf("%d %d", &a, &b);
int c = (a > b ? a : b);
//上面这行代码效果与下面这段注释的代码效果相同
// if (a > b)
// printf("%d\n", a);
// else
// printf("%d\n", b);
printf("%d\n", c);
return 0;
}