C.Primer.Plus.5e
7.2.1 介绍getchar()和putchar()
前面的多数程序所输入的内容都是数字。为了练习使用其他的形式,让我们来看一个面向字符的例子。
现在我们将接触专门为面向字符I/O而设计的一对C函数:getchar()和putchar()。
.
getchar()函数没有参数,它返回来自输入设备的下一个字符。例如,下面的语句读取下一个输入字符并将它的值赋给变量ch:
ch = getchar();
该语句与下面的语句有同样的效果:
scanf("%c", &ch);
.
putchar()函数打印它的参数。例如,下面的语句将先前赋给ch的值作为字符打印出来:
putchar(ch);
该语句与下面的语句有同样的效果:
printf("%c", ch);
.
因为这些函数仅仅处理字符,所以它们比更通用的scanf()和printf()函数更快而且更简洁。同样,注意到它们不需要格式说明符,因为它们只对字符起作用。这两个函数通常都在stdio.h文件中定义(而且,它们通常只是预处理宏(macro),而不是真正的函数;我们将在16章“C预处理器和C库”中讨论类似函数的宏)。
.
.
7.3.3 求值的顺序
除了那些两个运算符共享一个操作数的情况以外,C通常不保证复杂表达式的哪个部分首先被求值。
例如在下面的语句里,可能先计算表达式5+3的值,也可能先计算9+6的值。
apples = (5 + 3) * (9 + 6)
C语言允许这种不确定性,以便编译器设计者可以针对特定的系统做出最有效率的选择。一个例外是对逻辑运算符的处理。C保证逻辑表达式是从左至右求值的。&&和||运算符是序列的分界点,因此在程序从一个操作数前进到下一个操作数之前,所有的副作用都会生效。而且,C保证一旦发现某个元素使表达式总体无效,求值将立刻停止。这些约定像下面这样的结构成为可能:
while ((c = getchar()) != '' && c != '\n')
这个结构建立一个循环读入字符,直到出现第一个空格符或换行符。第一个子表达式给c赋值,然后c的值被用在第二个子表达式中。如果没有顺序保障,计算机可能试图在c被赋值之前判断第二个子表达式。
.
下面是另外一个例子:
if (number != 0 && 12 / number == 2)
printf("The number is 5 or 6.\n")
如果number值为0,那么第一个子表达式为假,就不再对关系表达式求值。这就避免了计算机试图把0作为除数。很多语言都没有这个特性,在知道number为0后,它们仍将继续后面的条件检查。
.
最后,考虑这个例子:
while (x++ < 10 &&
相关文档:
函数 - 声明、定义、调用
1. 如果函数没有声明, 应该在调用前定义:
#include <stdio.h>
/* 定义求大值函数 */
int MAX(int x, int y) {
if (x > y)
return x;
else
return y;
}
/* 定义求小值函数 */
int MIN(int x, int y) {
return x &l ......
/加了下面两个头文件,是为了在Win32工程中使用MFC的特性!
#include <afx.h>
#include <afxwin.h>
#include "stdio.h"
#include "conio.h"
////加了下面两句,是为了能够用string(basic_string类型)
#include <string>
using namespace std;
int main(int argc, char* argv[ ......
#include<stdio.h>
const int A=10;
void main()
{
int group[A];
for(int i=0;i<A;i++)
{
group[i]=i+1;
}
int k=A;
int m=0;
int n=2;
int c=0;
int x;
do
{
&nbs ......
最近因为研究一个东西,并且在很久以前就想把python好好看看。正好满足我的好奇心。我每天上班做得游戏都是用lua,也是一门很强大的脚本语言。可能我更喜欢python的缩进区分和面向对象吧。 今天只写一个简单的例子。一个简单的python脚本,就一个函数,用C/C++去调用。可能这也是作为程序来说最关心的一件事。所以我的pytho ......
用书上的代码拼凑的,还是很有成就感的哈
支持的运算符号有"+","-","*","/","(",")","#"。
支持20位以内无符号整数,当然可以很容易的改成有符号或者是实型数
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define OPSETSIZE 7
//函数结果状态代码
#define TRUE 1
#define FALSE 0 ......