求最大公约数
int gcb(int a,int b)
{
if(b==0) return a;
else return gcb(b,a%b);
}
对于浮点数 float double ++,只会对整数的部分加1,不会对小数点后的值+
int main()
{
float x=12,25;
x++;
printf("%d",x);x=13.25
}
取模运算只能对整型进行取模(char, short, int ,long int, long long
)
地址字节的大小
int a;
printf("%d",sizeof(&a));
x86 4个字节 32bit
64 8个字节 64bit
指针变量存放的是变量的首地址
指针访问结构体成员
(*sp).s_id;带括号是因为.的优先级高,*sp就是所指变量本身
sp->s_id
标准输入输出
显示器是标准输出文件stdout,向屏幕输出printf putchar
键盘为标准输入文件stdin 从键盘获取函数scanf getchar
下面这个代码,从键盘输入的数据先存在缓冲区中且代码停在第一个ch=getchar,当输入\n时,缓冲区才会将数据一个一个的给ch然后进入while循环,putchar也一样,先存入缓冲区,后读到屏幕
缓冲区在内存
int main()
{
int sun=0;
char ch='\0';
ch=getchar();
while(ch!='\n')
{
sum+=1;
ch=getchar();
}
printf("sun: %d\n",sum);
return 0;
}
缓冲区造成的问题
当从键盘中输入数字后按下enter 键后,就会将\n给ch就直接退出了,有一个方法是加上一行ch=getchar()将\n给ch
int main()
{
int sum=0;
int val=0;
char ch='0';
do
{
printf("input a number:");
scanf("%d",&val);
sum+=val;
printf("是否继续(Y/N)\n");
// ch=getchar();加这一行可以解决但是按多次空格也不行
ch=getchar();
}while(ch=='y'||ch=='Y');
printf("sum : %d\n",sum);
return 0;
}
sizeof既不是宏也不是函数,只是是一个运算符
typedef
typedef int arry[10];
arry ar={1,2,3};
ar就是整型数组并且为10个空间