易截截图软件、单文件、免安装、纯绿色、仅160KB

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 &&


相关文档:

C/C++/VC 实现字符串逆转的多种方法

/加了下面两个头文件,是为了在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[ ......

浅谈C内存分配1

关于C语言内存方面的话题要真说起来的话那恐怕就没头了,所以本文仅仅是一个浅谈。
关于内存问题
不同平台之间有一定的区别。本文所指的平台是x86的Linux
平台
用C语言做程序(其实其他语言也一样),不仅要熟悉语法,其实很多相关的背景知识也很重要。在学习和研究C语言中内存分配的问题前,首先要了解一下Linux分配给 ......

Python笔记(一)——C/C++调用python

最近因为研究一个东西,并且在很久以前就想把python好好看看。正好满足我的好奇心。我每天上班做得游戏都是用lua,也是一门很强大的脚本语言。可能我更喜欢python的缩进区分和面向对象吧。 今天只写一个简单的例子。一个简单的python脚本,就一个函数,用C/C++去调用。可能这也是作为程序来说最关心的一件事。所以我的pytho ......

使用C3P0连接Mysql的一个问题的解决过程


最近的一个项目在使用C3P0的连接池,数据库为Mysql。开发测试没有问题,在运行中每个一段长的空闲时间就出现异常Communications link failure due to underlying exception:
java 代码
查看了Mysql的文档,以及Connector/J的文档以及在线说明发现,出现这种异常的原因是:
Mysql服务器默认的“wait_timeout&rdquo ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号