字符串
char arr1[] = "abc";
char arr2[] = {'a','b','c'};
//打印字符串
printf("%s\n",arr1);
printf("%s\n",arr2);
运行结果:
abc
abcabc
结论:字符串以‘\0’标志结束,未加‘\0’不会结束输出,‘\0’不计入长度 。
求字符串长度
strlen("abc");
//需在头文件引入#include <string.h>
char arr1[] = "abc";
char arr2[] = {'a','b','c'};
printf("%d\n",strlen(arr1));
printf("%d\n",strlen(arr2));
arr1运行结果为3;
arr2运行结果为随机值(没有字符串结束标志)。
转义字符
转变了原来的意思。
转义字符 | 意义 |
---|---|
\a | 响铃 |
\b | 退格 ,将当前位置移到前一列 |
\f | 换页,将当前位置移到下页开头 |
\n | 换行,将当前位置移到下一行开头 |
\r | 回车 ,将当前位置移到本行开头 |
\t | 水平制表(跳到下一个TAB位置) |
\v | 垂直制表 |
\ | 代表一个反斜杠,防止它被解释为一个转义序列符 |
’ | 代表一个单引号(撇号)字符 |
" | 代表一个双引号字符 |
? | 代表一个问号 |
\0 | 空字符(NUL) |
\ddd | ddd表示1到3个八进制数字。如:\130–X (130的十进制为88,X的ASCII码为88) |
\xdd | dd表示2个十六进制数字。如:\x30–0 |
例:
printf("%c\n",'\'');
printf("%s\n","\"");
printf("c:\test\test0\n");
printf("c:\\test\\test0\n");
运行结果:
'
"
c: est est0
c:\test\test0
注释
解释复杂代码。
//C++注释风格
/*C语言注释风格,不支持嵌套注释*/
一般使用C++注释风格。
选择语句
int input = 0;
printf("输入(0/1):\n");
scanf("%d",&input);
if(input==0)
printf("no\n");
else
printf("yes\n");
运行结果:
输入(0/1):
1
yes
(1为键盘输入)
循环语句
while循环
int a=0;
while(a<10)
{
printf("%d\n",a);
a++;
}
if(a==10)
{
printf("finish\n");
}
运行结果:
0
1
2
3
4
5
6
7
8
9
finish
函数
int Add(int x,int y)//定义加法函数
{
int z = 0;
z = x + y;
return z;
}
int main()
{
int num1 = 0;
int num2 = 0;
scanf("%d%d",&num1,&num2);
printf("%d",Add(num1,num2));//引用函数
return 0;
}
运行结果:
1 5
6
(1 5为键盘输入)
数组
int arr[10] = {1,2,3,4,5,6,7,8,9,10};
char ch[5] = {'a','b','c'};//不完全初始化
arr[0]为第一个元素,即arr[0]==1
操作符
算数操作符
+ - * / %
移位操作符
>> <<
(移动的是二进制位)
位操作符
& | ^
赋值操作符
= += -= *= /= &= ^= |= >>= <<=
a = a + 3;
a += 3;
单目操作符
单目操作符 | 含义 |
---|---|
! | 逻辑反操作(0是假,1是真) |
– | 负值 |
+ | 正值 |
& | 取地址 |
sizeof | 操作数的类型长度(以字节为单位) |
~ | 对一个数的二进制按位取反 |
– – | 前置、后置 – – |
++ | 前置、后置++ |
* | 间接访问操作符(解引用操作符) |
(类型) | 强制类型转换 |
if(a)//如果a为真,执行
if(!a)//如果a为假,执行
sizeof计算的是字节大小
int arr[10]={0};
sizeof(arr);//结果为40,一次int为四字符
sizeof(arr[0]);//结果为4
~ :按二进制位取反(把所有二进制位的数字,1变成0,0变成1)
int a = 0;
printf("%d\n",~a);
0二进制:00000000…(32位)
~a二进制:111111111…
运行结果:
-1
整数在内存中存储的是补码
一个整数的二进制表示有3种:原码、反码、补码
例:
复数的计算:
-1:
10000000…001(原码)
111111111…110(反码)
111111111…111(补码)√
正整数:
原码、反码、补码相同
++:
1.前置++:先++,后使用
例:
int a = 10;
int b = ++a;
printf("%d\n",b);
printf("%d\n",a);
运行结果:
11
11
2.后置++:先使用,后++
例:
int a = 10;
int b = a++;
printf("%d\n",b);
printf("%d\n",a);
运行结果:
10
11