注册 登录
编程论坛 C语言论坛

大神们能不能帮我看看这个程序有什么问题

计算机好难啊 发布于 2020-04-03 11:00, 3470 次点击
#include "stdio.h"
void main()
{ int i=1,n;
  n=f(i,++i);
  printf("\nn=%d\n",n);
}
f(int a,int b)
{ int c;
   if(a>=b)
      c=1;
   else
      c=0;
   return(c);
}
我照着书上打的,我也不知道为什么,用vc++6.0,下面显示这些东西
--------------------Configuration: 1352 - Win32 Debug--------------------
Compiling...
1352.cpp
D:\CloudMusic\1352\1352.cpp(4) : error C2065: 'f' : undeclared identifier
D:\CloudMusic\1352\1352.cpp(8) : error C2373: 'f' : redefinition; different type modifiers
D:\CloudMusic\1352\1352.cpp(14) : fatal error C1004: unexpected end of file found
执行 cl.exe 时出错.

1352.exe - 1 error(s), 0 warning(s)
11 回复
#2
lin51616782020-04-03 11:11
书错 别看这书
换书吧

不止代码错 代码就算改到能编译
代码的逻辑也是错的
毫无价值
#3
rjsp2020-04-03 12:23
摘自 https://zh.
2) 若一个标量对象上的副效应与另一个使用同一标量对象之值的值计算相对无顺序,则行为未定义。

  f(i, i++); // 未定义行为

#4
叶纤2020-04-03 12:31
我感觉i和++i,里面的i是同一个
程序代码:

#include "stdio.h"//不要这么写用<>#include <stdio.h>
int f(int a,int b);
void main()
{ int i=1;int n;
  n=f(i,++i);
  printf("\nn=%d\n",n);
}
int f(int a,int b)
{ int c;
   if(a==b)
      c=1;
   else
      c=0;
   return(c);
}


#5
叶纤2020-04-03 14:04
玩了会4楼的代码
发现这串代码非常适合理解++,——,a更像是最终结果,b呈现的结果是后置加加以及后置减减的副作用,不过确实是未定义,楼主抛去这个未定义行为,
你应该注意到,函数也是需要声明定义的,就和int a;一样函数也应该int a();进行定义
那么怎样使用函数呢?
答案是和变量定义初始化一样
你可以这样
int i=1;

同样函数使用也是这样的
int i(){  bala,bala,return 0;}
#6
tcxk2020-04-03 14:13
为什么要return(c)呢,return c就完事啦
#7
叶纤2020-04-03 14:35
在语言学中return(c);属于强调行为
就比如说 啊!大海啊!你如此的美丽!
当然也可以说    大海!你如此美丽!
啊!只是多余,可要可不要的语气词。
        
#8
return_02020-04-03 18:19
返回 c

返回啊! c!
#9
forever742020-04-03 18:32
嗯,于是
C++就是
C的加萌版本
#10
叶纤2020-04-03 19:21
c++不是萌萌的,是追求优雅高贵的公子哥,只是在我这有点跑调,不过可以凑活着听听
c是追求自由豪迈的帅气贵公子,楼主这题我的发言可以当做笑话听听,除非需要区分优先级,return后面可以不加括号的
#11
hbccc2020-04-03 19:31
f函数没有定义啊
#12
bcbbcclbbc2020-04-04 11:36
用vc++6.0时,创建文件名后需要加上.c后缀,标注为用C语言,
如果不加编译时默认为C++(1352.cpp)
1