| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1301 人关注过本帖
标题:大家好!小弟有一个关于C上机运行的错误Warning prog1.c 9: Possibly incor ...
只看楼主 加入收藏
梦想成真2014
Rank: 1
等 级:新手上路
帖 子:8
专家分:4
注 册:2011-8-24
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:9 
大家好!小弟有一个关于C上机运行的错误Warning prog1.c 9: Possibly incorrect assignment in function
大家好!
错误提示:Warning prog1.c 9: Possibly incorrect assignment in function fun
程序可以运行,结果也对!最令人郁闷的是竟然有警告!所以想请教高手告诉我,这类错误的根本原因是什么?谢谢啦!!!
哈哈!代码: while(b[j++]=*(*a+(i++)));
这就是错误的地方了!其中 b为一维数组名,a为二维数组名!其功能就是把二维数组的元素存入一维数组中!个人没发现那个地方有错误,运行结果也对!可关键是她为何会警告???哎……百思不解呀??望高手指点!谢啦!
这是源代码:
void  fun(char  a[M][N], char  *b)
{
  /* 以下代码仅供参考 */
  int n,i=0,j=0; *b=0;
  for(n=0;n<3;n++)
  {
    while(b[j++]=*(*(a+n)+i++));/*错误警告行*/
    j-=1;
    i=0;
  }
}


[ 本帖最后由 梦想成真2014 于 2011-8-25 08:13 编辑 ]
搜索更多相关主题的帖子: function 
2011-08-24 22:44
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:0 
贴代码
2011-08-24 22:45
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
代码第9行,在fun函数中存在内存分配风险。加个强制类型转换应该就不告警了。

重剑无锋,大巧不工
2011-08-24 22:58
梦想成真2014
Rank: 1
等 级:新手上路
帖 子:8
专家分:4
注 册:2011-8-24
收藏
得分:0 
回复 2楼 voidx
哈哈 你好!代码已贴上!敬请指教!!

成也风云!败也风云!
2011-08-25 00:07
梦想成真2014
Rank: 1
等 级:新手上路
帖 子:8
专家分:4
注 册:2011-8-24
收藏
得分:0 
回复 2楼 voidx
你好! 代码已贴上!请问该如何进行强制转换!数组元素为字符型的!谢谢了!

成也风云!败也风云!
2011-08-25 00:12
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:0 
拜托贴完整一点撒~
2011-08-25 00:56
pauljames
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:千里冰封
威 望:9
帖 子:1555
专家分:10000
注 册:2011-5-8
收藏
得分:0 
给警告其实是好事情,至少它提醒了你潜在的风险。你这个代码中的两边的i++可能得不到正确的结果,因为有可能导致C语言中的未定义行为,也依赖于你的编译器实现。这种情况最好避免,解决的办法是把自增运算单独写。

经常不在线不能及时回复短消息,如有c/单片机/运动控制/数据采集等方面的项目难题可加qq1921826084。
2011-08-25 06:26
梦想成真2014
Rank: 1
等 级:新手上路
帖 子:8
专家分:4
注 册:2011-8-24
收藏
得分:0 
回复 7楼 pauljames
????i++这个问题还是不理解??

成也风云!败也风云!
2011-08-25 08:11
梦想成真2014
Rank: 1
等 级:新手上路
帖 子:8
专家分:4
注 册:2011-8-24
收藏
得分:0 
回复 6楼 voidx
贴好了!谢谢啦!

成也风云!败也风云!
2011-08-25 08:15
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:10 
while 的条件写成 (b[j++]=*(*(a+n)+i++)) != 0 就好了。
因为编译器期待这里是一个逻辑表达式,所以明确写成逻辑表达式的形式就好了

[ 本帖最后由 voidx 于 2011-8-25 10:32 编辑 ]
2011-08-25 10:12
快速回复:大家好!小弟有一个关于C上机运行的错误Warning prog1.c 9: Possibly ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015165 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved