[
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
`提示:本文主要介绍选择与循环语句的小细节
提示:以下是本篇文章正文内容,下面案例可供参考
一、sizeof的使用
sizeof是一个操作符
计算类型和变量大小、
printf("%d\n", sizeof(int));
printf("%d\n", sizeof(a));
//int类型四个字节
//使用sizeof计算数组的大小
int arr[10] = { 0 };
printf("%d\n", sizeof(arr));
二、单目操作符~
规则:按位取反
代码如下(示例):
//按(二进制位)取反码
//负数的计算:原码,反码,补码,printf打印源码
a = 0;
printf("%d\n", ~a);
/*why是-1?0是整数类型,整数在内存中存储的是补码,最高位1表示负数
原码为00000000000000000000000000000000
取反得补码为11111111111111111111111111111111
反码为11111111111111111111111111111110
原码为10000000000000000000000000000001即-1
总结:从原码到反码符号不变,其他取反,反码到补码,符号不变,个位取反,
其他不变*/
三、选择结构
else的小陷阱(新手必读)
注意:else的排版很重要
请问打印什么?
a = 1;
b = 2;
if (a == 3)
if (b == 2)
printf("yes");
else
printf("no");*/
//其实啥也不打印,else和最近的if匹配
//if(a==5)与if(a=5)的区别
//前者表示判断a是否等于5
//后者表示a被赋值为5,即i
switch语句格式
int day = 0;
scanf("%d\n", &day);
switch (day)
{
case 1:
printf("星期一");
break;
case 2:
printf("星期二");
break;
case 3:
printf("星期三");
break;
case 4:
printf("星期四");
break;
case 5:
printf("星期五");
break;
case 6:
printf("星期六");
break;
case 7:
printf("星期天");
break;
default:
printf("无");
break;
// //case后面只能是整形常量表达式
// //case 1.0或case n 都是错的
// //case是入口,break是出口
}
四.循环结构
- 循环结构(不断做一件事,直到不满足条件)
- 好比我们的求学历程,你只有一直变强,才有可能摆脱现状遇见更强的人
continue的作用
本次循环跳过后面代码重新回到条件判断
i = 1;
while (i <= 10)
{
if (i == 5)
continue;
printf("%d\n", i);
i++;
}
猜猜为什么不打印6,7,8,9
getchar与putchar的分析
- getchar读取一个字符,返回字符的AscII码值
如果读取失败,返回的是EOF—>-1,ASCII值:0~127 - putchar-打印一个字符
试分析为什么会默认进入else
int ps = getchar();
putchar(ps);
//解读getchar清除缓冲区
printf("请输入密码");
char password[20] = { 0 };
scanf("%s",&password);
printf("请确认密码(Y/N):");
int ch = getchar();
if (ch == 'Y')
{
printf("确认成功");
}
else
{
printf("确认失败\n");
}
输入的流程:scanf/getchar-缓冲区-人为敲键盘
缓冲区如小岛秀夫的《死亡搁浅》的冥滩(ps:没玩过这款游戏的读者可跳过这段比喻))
在exe中输入完密码:12345+回车=12345+\n
scanf只读取到5就停止,\n停留在缓冲区上
轮到getchar,它直接把缓冲区的\n读取,ch=\n,进入else
那如何清空缓存区?
printf("请输入密码");
scanf("%s", &password);
printf("请确认密码(Y/N):");
//清空缓存区
while (getchar()!='\n')
{
;
}
ch = getchar();
if (ch == 'Y')
{
printf("确认成功");
}
else
{
printf("确认失败");
}
运用,如何只打印数字字符?
char ch = '\0';
while ((ch=getchar())!=EOF)
//当我输入一个正常的字符
{
if (ch < '0' || ch>'9')
continue;
putchar(ch);
}