正在加载图片...
靳润昭C语言教程讲义 2001年2月17日 【例4.6】 int i=8 print f("%d\n",++i) printf(%d\n", -i) printf( %d\n", i++) printf("%d\n" -i++) printf("%d\n" -i--) 包 这两个程序的区别是用一个 printf语句和多个 printf语句输出。但从结果可以看出 是不同的。为什么结果会不同呢?就是因为 printf函数对输出表中各量求值的顺序是自右 至左进行的。在第一例中,先对最后一项ν-i-〃求值,结果为-8,然后i自减1后为7。再 对w-i++〃项求值得-7,然后i自增1后为8。再对νi—"项求值得8,然后ⅰ再自减1后为 7。再求"i++"项得7,然后i再自增1后为8。再求一i〃项,i先自减1后输出,输出值 为7。最后才求输出表列中的第一项”++i",此时i自增1后输出8。 但是必须注意,求值顺序虽是自右至左,但是输出顺序还是从左至右,因此得到的结果 是上述输出结果。 452 scanf函数(格式输入函数) canf函数称为格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量 之中。 1. scanf函数的一般形式 scanf函数是一个标准库函数,它的函数原型在头文件 stdio.h"中,与 printf函数相 同,C语言也允许在使用 scanf函数之前不必包含 stdio.h文件 scanf函数的一般形式为 scanf(格式控制字符串〃,地址表列) 其中,格式控制字符串的作用与 printf函数相同,但不能显示非格式字符串,也就是 不能显示提示字符串。地址表列中给出各变量的地址。地址是由地址运算符"&"后跟变量名 组成的。 例如 分别表示变量a和变量b的地址。 这个地址就是编译系统在内存中给a,b变量分配的地址。在C语言中,使用了地址这个 概念,这是与其它语言不同的。应该把变量的值和变量的地址这两个不同的概念区别开来 变量的地址是C编译系统分配的,用户不必关心具体的地址是 变量的地址和变量值的关系如下 在赋值表达式中给变量赋值,如 a=567 则,a为变量名,567是变量的值,&a是变量a的地址。 但在赋值号左边是变量名,不能写地址,而 scanf函数在本质上也是给变量赋值,但要 第8页靳润昭 C 语言教程讲义 2001 年 2 月 17 日 第8页 【例 4.6】 main(){ int i=8; printf("%d\n",++i); printf("%d\n",--i); printf("%d\n",i++); printf("%d\n",i--); printf("%d\n",-i++); printf("%d\n",-i--); } 这两个程序的区别是用一个 printf 语句和多个 printf 语句输出。但从结果可以看出 是不同的。为什么结果会不同呢?就是因为 printf 函数对输出表中各量求值的顺序是自右 至左进行的。在第一例中,先对最后一项“-i--”求值,结果为-8,然后 i 自减 1 后为 7。 再 对“-i++”项求值得-7,然后 i 自增 1 后为 8。再对“i--”项求值得 8,然后 i 再自减 1 后为 7。再求“i++”项得 7,然后 i 再自增 1 后为 8。 再求“--i”项,i 先自减 1 后输出,输出值 为 7。 最后才求输出表列中的第一项“++i”,此时 i 自增 1 后输出 8。 但是必须注意,求值顺序虽是自右至左,但是输出顺序还是从左至右,因此得到的结果 是上述输出结果。 4.5.2 scanf 函数(格式输入函数) scanf 函数称为格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量 之中。 1. scanf 函数的一般形式 scanf 函数是一个标准库函数,它的函数原型在头文件“stdio.h”中,与 printf 函数相 同,C语言也允许在使用 scanf 函数之前不必包含 stdio.h 文件。 scanf 函数的一般形式为: scanf(“格式控制字符串”,地址表列); 其中,格式控制字符串的作用与 printf 函数相同,但不能显示非格式字符串,也就是 不能显示提示字符串。地址表列中给出各变量的地址。地址是由地址运算符“&”后跟变量名 组成的。 例如: &a, &b 分别表示变量 a 和变量 b 的地址。 这个地址就是编译系统在内存中给 a,b 变量分配的地址。在C语言中,使用了地址这个 概念,这是与其它语言不同的。 应该把变量的值和变量的地址这两个不同的概念区别开来。 变量的地址是 C 编译系统分配的,用户不必关心具体的地址是多少。 变量的地址和变量值的关系如下: 在赋值表达式中给变量赋值,如: a=567 则,a 为变量名,567 是变量的值,&a 是变量 a 的地址。 但在赋值号左边是变量名,不能写地址,而 scanf 函数在本质上也是给变量赋值,但要
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有