一.数据类型关于char
C语言中的char是用于声明单个字符的关键字。同时我们也可以用于数组的申请,但是这并没有完。它也可以存储整形数据,例如
#include<stdio.h>
int main(void){
char a[0];
scanf("%d",&a[0]);
printf("%d",a[0]);
return 0;
}
这是因为int和char在本质上一样,不过编译器会进行转换。
但是 由于char是8bit,所以它的范围是【-128,127】
二.算法小技巧--
1.交换数值的三种方法:
异或(^) 这个操作符的意思是不同为1,其余为0(二进制);
例如:1001 和1011 —>0010
对于一个数连续异或两次值不变
#include<stdio.h>
int main(void){
int a=5,t=a;
a=a^a;
a=t^a;
printf("%d",a);
return 0;
}
利用这个特性,就有以下操作:
int a=5,t=12;
a=a^t;
t=t^a;
a=a^t;
printf("%d %d",a,t);
数学运算 这就是利用 a=(a+b)-a;
b=(a+b)-b;
这就容易造成数据越界导致结果不准(不建议用)
中间值交换 这个可以说是最常用的算法了
int a=5,t=12,temp;
temp=a;
a=t;
t=temp;
printf("%d %d",a,t);
三.常见的问题
1.有时候我们给多组字符串变量赋值时会出现一些问题,例如以下问题程序
char a,b;
scanf("%c",&a);
scanf("%c",&b);
printf("%c %c",a,b);
我们会发现b无法打印出来,这是由于在给a赋值后的回车存入缓存区,在下次的b时被直接提取出来,所以为了给b附上值,我们应该清除缓存区
以下给出两种方法:
1.
scanf("%c",&a);
scanf(" %c",&b);
第一种在%c前加一个空格
2.
scanf("%c",&a);
getchar();
scanf("%c",&b);
用getchar();清除缓存区
3.写题的时候尽可能用long long int