发现C编译会提示这样的错误

Schnecke 2006-11-21 07:41:11
#include <stdio.h>
int test_pointer(char* para)
{
char buf[10];
char* pbuf = buf;
char* ppara = para;

int count = 0;
while(count < 3)
pbuf++ = ppara++;
return 0;
}
int main(void)
{
char buf[100];
int array_0 = 1;
int j = 0;

test_pointer(buf);
return 0;
}

提示错误:
error C2106: '=' : left operand must be l-value
其实是把: *pbuf++ = *ppara++;
误写为pbuf++ = ppara++

不明白C编译器(VC++6.0)在搞什么?

...全文
209 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
chai2010 2006-11-22
  • 打赏
  • 举报
回复
for(int i; ;);中定义的i是应该是局部变量,
但是VC中的处理却...

这可能是C++定义的模糊造成的,
<c++编程思想>中的代码一般也是回避这个问题
大家可以参考一下java,这种写法是很常见的
huangyangman 2006-11-22
  • 打赏
  • 举报
回复
你应该感谢编译器吧,
你误写了 ,编译器能帮你找出来,你还怪它
啥世道~
chai2010 2006-11-22
  • 打赏
  • 举报
回复
偶就只要VC的一个错误:

for(int i; ;);
for(int i; ;); // 这里的i就提示重复定义!

jsjjms 2006-11-21
  • 打赏
  • 举报
回复
看问题要理解其实质,一般情况下,不要怀疑microsoft的技术:)
kookworm 2006-11-21
  • 打赏
  • 举报
回复
赋值号左边必须是一个变量,不能是表达式
owlling 2006-11-21
  • 打赏
  • 举报
回复
你左边是个临时值,没有左值。怎么赋值?
你++的前置和后置的区别都不知道?还好意思怪编译器。
飞哥 2006-11-21
  • 打赏
  • 举报
回复
考虑地址的特点
飞哥 2006-11-21
  • 打赏
  • 举报
回复
不知道你在说什么
赋值号左边必须是一个左值

这个也有错?

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧