前言
在本节课中,根据书上我们了关于条件判断语句if()的用法,if语句我们之前已经提前写过了,就不再写了,详情请见:
根据书本介绍,我们这一期就讲getchar()、putchar()、ctype.h类型的字符函数、逻辑运算符(与或非)、条件运算符(?:)。
字符输入输出
到目前为止, 学过的大多数程序示例都要求输入数值,我们已经知道了用scanf()和printf()根据%c转换说明读写字符,那我们继续看其他的对字符输入/输出函数: getchar() 和putchar()。
getchar()函数不带任何参数, 它从输入队列中返回下一个字符。例如, 下面的语句读取下一个字符
输入, 并把该字符的值赋给变量ch:
ch = getchar();
该语句与下面的语句效果相同:
scanf("%c", &ch);
而putchar()函数打印它的参数。例如, 下面的语句把之前赋给ch的值作为字符打印出来:
putchar (ch) ;
该语句与下面的语句效果相同:
printf("%c", ch);
由于这些函数只处理字符, 所以它们比更通用的scanf()和printf()函数更快、更简洁。而且, 注意getchar()和putchar()不需要转换说明, 因为它们只处理字符。它们被定义在stdio.h里。
值得注意的是,字符实际上是作为整数ASCII码值进行存储的,所以其实我们可以这么写:
char ch;
ch=getchar();
putchar(ch+1);
当我们输入a时,输出即为b。因为字符是以ASCII码值储存的,ch+1相当于ch的ASCII码+1,a的下一位就是b,putchar只能输出字符,所以输出是b。
ctype.h系列的字符函数
C中有一系列专门处理字符的函数, ctype.h 头文件包含了这些函数的原型。
例如下表:
我们可以用这些函数来便捷的判断特殊的符号。
多重选择
现实生活中我们经常有多种选择。 在程序中也可以用 else if 扩展 if else 结构模拟这种情况。
我们有两种情况,这两种是等价的:
例如:
if(st1)
case1;
else if(st2)
case2;
else if()...
这是一种阶梯样的,还有一种是并排样的。
if(st1)
case1;
else if(st2)
case2;
else if()...
只是写法不同而已,实际并无区别。
逻辑运算符
if 语句和 while 语句通常使用关系表达式作为测试条件, 有时, 把多个关系表达式组合起来会很有用。
常见的逻辑运算符有:
若调用iso646.h头文件下,我们可以直接用英文代表这些符号,即:
而在优先级方面:!运算符的优先级很高, 比乘法运算符还高,与递增运算符的优先级相同, 只比圆括号的优先级低。&& 运算符的优先级比II运算符高,但是两者的优先级都比关系运算符低,比赋值运算符高。
条件运算符(?:)
C提供条件表达式(conditional expression) 作为表达if else 语句的一种便捷方式, 该表达式使用?:条件运算符。该运算符分为两部分,需要3个运算对象。带一个运算对象的运算符称为一元运算符, 带两个运算对象的运算符称为二元运算符。以此类推, 带3个运算对象的运算符称为三元运算符。条件运算符是C语言中唯一的三元运算符。
例如:
x = (y < 0) ? -y : y;
在=和;之间的内容就是条件表达式, 该语句的意思是“ 如果y小于0, 那么x=-y;否则x=y,
用if else 可以这样表达:
if (y < 0)
x = -y;
else
x = y;
故:条件表达式的通用形式如下:
expression1? expression2 : expression3
如果expression1 为真(非0), 那么整个条件表达式的值与expression2 的值相同; 如果expression1 为假(O), 那么整个条件表达式的值与expression3 的值相同。
后记
看了下其他学校,我们上得还真是慢啊,不过这也有利于我们全面的吸收知识吧,这本书讲得还是挺透彻的。
Comments NOTHING