char 字符型 1 byte
short 短整型 2 byte
int 整型 4 byte
long 长整型 4 byte
long long 更长的整型 8 byte
float 单精度浮点型 4 byte
double 双精度浮点型 8 byte
long double 16 byte
#include<stdio.h>
int main(){
printf("%d\n",sizeof(long));
printf("%d\n",sizeof(long double));
}
int main()
{
int num1 = 0;
int num2 = 0;
printf("请输入两个数字:>");
scanf("%d%d", &num1, &num2);
int sum = num1+num2;
printf("sum = %d\n", sum);
return 0;
}
有的编译器会在这里提示错误,因为c规定对变量的声明应该在函数的开头。
修改后:
int main()
{
int num1 = 0;
int num2 = 0;
int sum = 0;
printf("请输入两个数字:>");
scanf("%d%d", &num1, &num2);
sum = num1+num2;
printf("sum = %d\n", sum);
return 0;
}
这样应该就不会有问题了
注意变量的作用域
int main()
{
{
int a = 10; //对变量a的声明再括号内,所以a的作用域仅在括号内
}
printf("a = %d\n", a);
return 0;
}
外部变量引用
//声明外部符号(仅需要再同一个项目的另一个c文件中声明这个变量即可,可以直接调用)
extern int g_val;
int main()
{
printf("g_val = %d\n", g_val);
return 0;
}
大家思考下面这个代码sum函数是否可以算出a+b的和
#include<stdio.h>
int sum(int x){
return x+a;
}
int a=2; //a 声明在sum函数后
int main(){
int b=2;
printf("%d",sum(b));
return 0;
}
运算结果并不是我们像要的,应该如何修改呢?
只需要将对 a的声明放在要调用a的sum函数前即可
#include<stdio.h>
int a=2; //
int sum(int x){
return x+a;
}
int main(){
int b=2;
printf("%d",sum(b));
return 0;
}
也有例外,供大家思考
#include<stdio.h>
int sum(int x,int y){
return x+y;
}
int a=2;
int main(){
int b=2;
printf("%d",sum(a,b));
return 0;
}
如:3.14,"abc" ,'a'
声明方式const int num = 10
一般来说常变量无法再赋其他值
常变量依然是变量,并不是常量(int arr[num] = {0};这个语句是有错误提示的,证明num并不是常量)
#include<stdio.h>
#define MAX 10
int main(){
int a=MAX;
printf("%d",a);
}
//输出结果为10
enum Sex
{
MALE,
FEMALE=5,
SECRET
};
#include<stdio.h>
int main(){
printf("%d\n", MALE);
printf("%d\n", FEMALE);
printf("%d\n", SECRET);
return 0;
}
enum 枚举类型常量 如果没有赋予其他处置默认从0开始递增。
char arr1[] = "abc";
char arr2[] = {'a', 'b', 'c'};
printf("%s\n", arr1);
printf("%s\n", arr2);
思考一下上述两个printf函数会输出什么?是否一样?
结果是
arr1可以正常输出
但是arr2却在输出abc后出现了乱码(这个乱码是随机的,可能出现也可能不出现)
为什么会这样?
因为c语言中会在字符串后面自动加上空字符'\0',它代表着字符串的结束
再输出arr2过程中由于后面没有终止符,系统会继续向下搜寻,而后面是什么内容是未知的,因此会出现乱码。
printf("%d\n", strlen(arr1));//string length
printf("%d\n", strlen(arr2));
字符串的长度都是3
如果我想输出目录“ c:\test\090\test.c”用下面代码输出是否可以?
#include<stdio.h>
int main(){
printf("c:\test\070\test.c");
}
输出结果竟然是:c: est8 est.c
为什么会这样?因为‘\’是一个转义字符,‘\t’为水平制表符 会进行缩进
那么应该正确的输出我们想要的结果呢?
我们只需要再''之前再加上一个''再次进行转义就好了
注:八进制数位上最大值为7
以上就是本次关于c语言要点的归纳,感谢观看