常见问题解决
C4996 ‘scanf’: This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. Project2_27 e:\vs\test\project2_27\project2_27\2_27.c 8
解决办法:
1、scanf是C语言提供的,scanf_s不是标准C语言提供的,是VS编译器提供的。使用scanf_s代替
2、源文件代码第一行加入
#define _CRT_SECURE_NO_WARNINGS 1
使警告失效
C语言中的常量的类型
1、字面常量
2、const修饰的常变量
3、#define定义的标识符常量
4、枚举常量
//例子
int main()
{
int num=4;//变量
3;//字面常量
return 0;
}
int mian()
{
//const-常变量
const int num=4;
printf("%d\n",num);
num=8;
printf("%d\n",num);
return 0;
//运行的话会报错,num不能再变了
}
//#define 定义的标识符常量
#define MAX 10
int main()
{
int arr[MAX]={0};
printf("%d\n",MAX);
return 0;
}
//枚举常量
//枚举——一一列举
//例如:性别:男、女、保密;三原色:红、黄、蓝
//枚举关键字——enum
#include
enum Sex{
MALE,
FEMALE,
SECRET,
};
//MALE、FEMALE、SECRET——枚举常量
int main()
{
printf("%d\n",MALE); //0
printf("%d\n",FEMALE);//1
printf("%d\n",SECRET);//2
return 0;
}
双引号引起来的一串字符,简称为字符串。例如“hello world.\n”
注意:字符串的结束标志是一个\0的转义字符。在计算字符串长度的时候\0是结束标志,不算作字符串内容。
int main()
{
char arr1[] = "abc"; //数组
//"abc"---'a' 'b' 'c' '\0' '\0'字符串的结束标志
char arr2[] = { 'a','b','c' ,0};
printf("%s\n", arr1);
printf("%s\n", arr2);
return 0;
}
//输出结果
abc
abc烫烫烫烫蘟bc //因为第二种写法,没有结束
//求字符串长度
int main()
{
char arr1[] = "abc"; //数组
char arr2[] = { 'a','b','c'};
printf("%d\n", strlen(arr1));
printf("%d\n", strlen(arr2));
return 0;
}
输出结果:3 15
//为什么是15 因为第二种写法是经过15次之后才找到了/0,因此是随机的,不可知的。
转义字符 | 释义 |
---|---|
? | 连续书写多个问号时,防止他们被解析成三字母词 |
\’ | 表示字符常量’ |
\ | 表示一个反斜杠,防止被解释为转义序列符 |
\a | 警告字符,蜂鸣 |
\b | 退格符 |
\f | 进纸符 |
\n | 换行 |
\r | 回车 |
\t | 水平制表符 |
\v | 垂直制表符 |
\ddd | ddd表示1-3个八进制的数字。如:\130X |
\xdd | dd表示2个十六进制数字。如:\x30 0 |
int main()
{
printf("D:\test\182\test.c"); \\ \t——水平制表符
\\printf("D:\\test\\182\\test.c");
return 0;
}
//输出结果
D: est82 est.c
D:\test\182\test.c
C语言注释风格/xxxxxxxxx/
缺点:不能嵌套注释
C++注释风格//xxxxxxx
可以注释一行也可以注释多行
int main()
{
int input = 0;
printf("你好呀\n");
printf("你要好好学习吗?(1/0)>: "); //>:转义字符
scanf("%d",&input);//1/0
if(input==1)
printf("好工作\n");
else
printf("回家种地\n");
return 0;
}
int main()
{
int line=0;
printf("练习写代码\n");
while(line<2000){ //while循环语句
printf("敲一行代码\n",line);
line++;
}
if(line>=2000)
printf("学好C语言了\n");
return 0;
}
函数有自定义函数和库函数
函数的特点:简化代码,代码重复使用
int main()
int Add(int x,int y) //Add函数名,x,y函数参数
{ //函数体
int z=x+y;
return z;
}
{
int num1=10;
int num2=20;
int sum=0;
int a=100;
int b=200;
//原始 sum=num1+num2;
sum=Add(num1,num2);
//sum=a+b;
sum=Add(a,b);
printf("sum=%d\n",sum);
return 0;
}
C语言数组定义:一组相同类型元素的集合
int arr[10]={1,2,3,4,5,6,7,8,9,10};//定义一个整形数组,最多放10个元素
int main()
{
//int arr[10];//定义一个存放1-个整数数字的数组
//char ch[20];
int arr[10]={1,2,3,4,5,6,7,8,9,10};//定义一个存放10个整数数字的数组
printf("%d\n",arr[4]) //下标的方式访问元素
return 0;
}
输出结果:5
//打印所有数组元素
int main()
{
int arr[10]={1,2,3,4,5,6,7,8,9,10};
int i=0;
while(i<10)
{
printf("%d",arr[i]);
i++;
}
}
算数操作符 + - * / %
移位操作符 << >>
位操作 & | ^
赋值操作 =、+=、-=、*=、&=、^=、|=、>>=、<<=
单目操作符
//移位操作
int main()
{
//移2进制位操作符 <<左移 >>右移
int a=1;
//整型1占4个字节=32bit
//00000000000000000000000000000001
int b=a<<1
//00000000000000000000000000000010
printf("%d\n",b);
return 0;
}
//位(二进制位)操作
int main()
{
//&按位与
//|按位或
//^按位异或 对应的二进制位相同,则为0;对应二进制位相异,则为1
int a=3; //011
int b=5; //101
int c=a&b; //001
int d=a|b; //111
int e=a^b;//110
printf("%d\n",c);
printf("%d\n",d);
printf("%d\n",e);
return 0;
}
输出结果:1 7 6
int main()
{
int a=10;
a=20; //=赋值 ==判断相等
a=a+10; //等价代换:a+=10
}
int main()
{
int a=10;
printf("%d\n",sizeof(a));//sizeof计算的是变量或者类型所占空间的大小
int b=20;
a+b; //双目操作符
int a=-2;
int c=+3;//正好一般省略
//计算数组的元素个数
//个数=数组总大小/每个元素的大小
int arr[10]={0};//10个整型元素的数组
int sz=0;
sz=sizeof(arr)/sizeof(arr[0]);
}
int main()
{
int a=10;
int b=a++;//后置++,先使用,再++ --与之类似
int b=++a;//前置++。先++,再使用
printf("a=%d b=%d\n",a,b); //a=11 b=10
printf("a=%d b=%d\n",a,b);// a=11 b=11
return 0;
}
int main()
{
int a=(int)3.14; //()里面放类型,强制转换
return 0;
}
一些想说的话:
种一棵树的最好时间是十年前,其次是当下。已经错过了最好的时间,希望现在为时不晚。大学四年生活即将步入尾声,四年时间可以做好多事,但我并没有完完整整的做完一件事,想学的东西没有学完,专业技能一沓糊涂,考研考的也不怎么样……罢了再不提前程往事,今年希望做成自己想做的事情!