初识别C语言(二)
一、scanf输入4996报错解决办法
int main()
{
int num1 = 0;
int num2 = 0;
int sum = 0;
scanf("%d %d",&num1, &num2);
sum = num1 + num2;
printf("sum = %d\n",sum);
system("pause");
return 0;
}
-
解决办法:在main之前加上:#pragma warning(disable:4996)
二、常量
-
字面常量
int main() { 3; 100; 3.14; system("pause"); return 0; }
-
const修饰的常变量:被const修饰的常变量不可修改
其中 n 是变量,但是又有常属性,所以我们说 n 是常变量;数组的定义中元素的大小只能用常数. -
#define 定义的标识符常量
-
枚举常量 – 关键字:enum
enum Sex { MALE, FEMALE, SECRET }; int main() { enum Sex s = FEMALE; //用枚举常量赋值 printf("%d\n",MALE); printf("%d\n", FEMALE); printf("%d\n", SECRET); system("pause"); return 0; }
-
枚举本身的常量不可修改,枚举类型所定义的变量是可以修改的
三、字符串
C语言中的字符串就是用双引号引起来的一串字符
-
“abcd”;“hello world”;""
int main() { char arr1[] = "abc"; char arr2[] = { 'a','b','c' }; printf("%s\n",arr1); printf("%s\n",arr2); system("pause"); return 0; }
我们发现 arr1[] 是以 0 结尾,而 arr2[] 是没有以 0 结尾,若加上0,则输出结果一样.
-
这是因为字符串是以 ‘\0’ 结束.若无此结束标志,则会打印随机值.’\0’ 对应的ASII码是0.
int main() { char arr1[] = "abc"; char arr2[] = { 'a','b','c' }; printf("%d\n",strlen(arr1)); printf("%d\n",strlen(arr2)); system("pause"); return 0; }
-
这是因为在计算 arr1 的时候,计数到 3 时遇到 ‘\0’,而在计算 arr2 时,由于超过 ‘a’,‘b’,‘c’ 之后是随机值,即在哪遇到 ‘\0’ 就在那停止计数.
四、转义字符
-
\? – 在书写连续多个问号时使用,防止他们被解析成三字母词
-
\’ – 用于表示字符常量’
-
\“ – 用于表示一个字符串内部的双引号
-
\\ – 用于表示一个反斜杠,防止它被解释为一个转义序列符。
-
\a – 警告字符,蜂鸣
-
\b – 退格符
-
\f – 进纸符
-
\n – 换行
-
\r – 回车
-
\t – 水平制表符
-
\v – 垂直制表符
-
\ddd – ddd表示1~3个八进制的数字。 如: \130 X
这是因为 ‘\t’ 算一个字符.而 ‘\32’ 表示八进制,也代表一个字符,故最后结果是 c + : + \t + e + s +t + \32 + \t + e + s + t + . + c = 13 -
\xdd – dd表示2个十六进制数字。 如: \x30 0
五、选择语句
int main()
{
int input = 0;
printf("学习编程\n");
printf("李要好好学习吗?(1/0) > : ");
scanf("%d",&input);
if (input == 1)
printf("好offer\n");
else
printf("回家种地\n");
system("pause");
return 0;
}
六、while循环语句
int main()
{
int line = 0;
printf("开始学习编程!!!\n");
while (line < 20000)
{
printf("敲代码: %d\n",line);
line++;
}
if(line >= 20000)
printf("恭喜你,喜提offer!!\n");
system("pause");
return 0;
}
七、函数
int Add(int x ,int y)
{
int z = x + y;
return z;
}
int main()
{
int sum = 0;
sum = Add(100,200);
printf("sum = %d\n", sum);
system("pause");
return 0;
}
八、数组
-
数组就是一组相同元素的集合
int main() { int arr1[10]; //定义一个空间大小为10的整型数组 int arr[10] = { 1,2,3,4,5,6,7,8,9 }; //对数组初始化 char arr2[20]; float arr3[5]; system("pause"); return 0; }
-
数组的下标是从0开始.即:arr[4] 代表第五个元素
-
循环打印数组里面的值
int main() { int arr1[10]; //定义一个空间大小为10的整型数组 int arr[10] = { 1,2,3,4,5,6,7,8,9,10 }; //对数组初始化 int i = 0; while (i < 10) { printf(" %d", arr[i]); i++; } printf("\n"); system("pause"); return 0; }
九、操作符
-
算数操作符: + - * / %
-
移位操作符: >> <<
-
位操作符:
&(遇0则0)
^(相同为0,相异为1)
|(有1则1)
-
赋值操作符:
-=
+=
-=
*=
/=
&=
^=
|= ; >>= ; <<= -
单目操作符(一个操作数)
! 逻辑反操作;
– 负值;+ 正值;
& 取地址;
-sizeof 操作数的类型长度(以字节为单位); ~ 对一个数的二进制按位取反;-- 前置、后置- -
++ 前置、后置++; * 间接访问操作符(解引用操作符)
(类型) 强制类型转换比 -
关系操作符:>; >=; <; <=; != 用于测试“不相等”; == 用于测试“相等”
-
逻辑操作符: && 逻辑与; || 逻辑或
-
条件操作符: exp1 ? exp2 : exp3
-
逗号操作符:exp1 , exp2 , exp3 , … expN
-
下标引用、函数调用和结构成员 [] () . ->
十、sizeof
- sizeof 计算的是变量/类型所占空间的大小,单位是字节.
- 计算数组空间大小
- 计算数组个数大小