行编译,连接后,输出窗口将有如下显示:
--------------------Configuration: project - Win32 Debug-------------------Compiling... s2_2.c Linking... project.exe - 0 error(s), 0 warning(s)
表示编译, 连接正确出现 0 个错误, 个警告. 0 此时点击 "组建" 菜单的 "执行[project.exe]" 按钮,程序开始执行,
系统弹出一个 Dos 控制台界面窗口,输出提示语: "Please input a, b:" (如图 A.9 所示) ,此时,输入: "10,20" (注:逗号为半角逗号) ,并按下回车,那么 10 将 赋值给 a,20 将
赋值给 b,同时输出窗口将显示: "Max (a, b) = 20." ,表明运行正常,并求 到了 a 和 b 的最大值(如图 A.10 所示) .
图 A.9 图 A.10 2.输入非半角逗号导致结果不正确 在出现 "Please input a, b:" 的时候, 输入: "10, 20" (全角逗号), 此时系统输出为: "Max (a, b) = 10.".结果并不是希望的 20,原因是 20 并未输入给 b,在 scanf( )的输入格式控制字 符串中的两个%d 和%d 之间有一个半角逗号,必须原样输入.上述输入中系统并未接收到 半角逗号所以 20 也就不可能输入给 b.
四川大学计算机"程序员摇篮"教学团队 作者:陈良银
相关 C/C++教学资源欢迎访问网站: cs.scu.edu/~chenliangyin
另外,如果在输入时输入"10 20"(中间无半角逗号,只有空格) ,也会得到同样的结 果. 当我们将"scanf("%d,%d", &;a, &;b);"改为"scanf("%d%d", &;a, &;b);"时,此时就可以 在输入时用空格来分隔两个输入的整数. 3.在 main()函数前面将函数声明语句"int Max (int x, int y);"注释掉 单击"组建"菜单的"编译"按钮,此时将会出现如下编译结果提示:
--------------------Configuration: project - Win32 Debug-------------------Compiling... s2_2.c F:\test\project\s2_2.c(16) : warning C4013: 'Max' undefined; assuming extern returning int s2_2.obj - 0 error(s), 0 warning(s)
出现了 C4013 警告,它通知 Max 函数标识符未定义,并假定其返回 int 型数据类型. 在 C89 中,系统还可以假定它返回 int,本题看起来也是正确的,但假设 Max 函数本身返回 的不是 int 而是 double,系统的这种假定就错误了.另外,C99 中,所有的函数在使用前都 应声明(main 函数除外) .所以请养成习惯,使用前先对函数进行声明. 4.在 main()函数前面将函数声明语句"int Max (int x, int y);"改为"double Max (int x, int y);" 单击"组建"菜单的"编译"按钮,此时将会出现如下编译结果提示:
--------------------Configuration: project - Win32 Debug-------------------Compiling... s2_2.c F:\test\project\s2_2.c(16) : warning C4244: '=' : conversion from 'double ' to 'int ', possible loss of data F:\test\project\s2_2.c(26) : error C2371: 'Max' : redefinition; different basic types F:\test\project\s2_2.c(7) : see declaration of 'Max' 执行 cl.exe 时出错. s2_2.obj - 1 error(s), 0 warning(s)
系统
报告了一个警告和一个错误.鼠标左键双击输出窗口的 C4244 警告,将在程序窗 口出现一个蓝色箭头指向警告所在行, 说明错误就在该行或者该行附近. "c = Max (a, b);" 在 语句中,c 是 int 型而 Max( )的返回值被声明为 double 型,所以系统警告说:从 double 赋值 给 int 进行的赋值转换,将可能引起数据丢失.鼠标左键双击 C2371 错误提示,将在程序窗 口出现一个蓝色箭头指向错误所在行,说明错误可能就在该行.该错误提示说明:Max( ) 重复定义了.事实上我们