nk54 发表于 2020-10-24 01:07:47

这个问题错哪了?

#include <stdio.h>
void main()
{
        int i=8;
        printf("%d\n",++1);
        printf("%d\n",--1);
}

F:\学习\visual c++ 6.0\data exceed\exceed.c(5) : error C2105: '++' needs l-value
F:\学习\visual c++ 6.0\data exceed\exceed.c(6) : error C2105: '--' needs l-value
执行 cl.exe 时出错.

data exceed.exe - 1 error(s), 0 warning(s)

风过无痕1989 发表于 2020-10-24 01:31:12

本帖最后由 风过无痕1989 于 2020-10-24 14:12 编辑

printf函数,之所以称它为格式化输出函数,该函数的声名如下:

int printf(const char *format, ...);


可以看到printf函数的声明就会有点懵,它参数的写法与我们之前学到的函数知识不一样,printf函数的参数的个数和类型都是可变的,每一个参数的输出格式都有对应的格式说明符与之对应

你左边使用的控制符是 %d,右边对应的是个 + 号(下一句是个减号),故而出错;格式控制符比后面的变量多了、少了,都可能造成输出结果不正确

nk54 发表于 2020-10-24 02:01:10

本帖最后由 nk54 于 2020-10-24 02:03 编辑

风过无痕1989 发表于 2020-10-24 01:31
printf函数,之所以称它为格式化输出函数,该函数的声名如下:




哦,原来是我把i敲成1了,哈哈

风过无痕1989 发表于 2020-10-24 08:10:18

nk54 发表于 2020-10-24 02:01
哦,原来是我把i敲成1了,哈哈

满意了就请结帖,给个最佳答案吧~~

lhgzbxhz 发表于 2020-10-24 13:27:30

风过无痕1989 发表于 2020-10-24 01:31
printf函数,之所以称它为格式化输出函数,该函数的声名如下:




你理解错了吧,1是一个字面量右值,怎么能对一个右值进行自增自减操作呢?

风过无痕1989 发表于 2020-10-24 13:54:44

本帖最后由 风过无痕1989 于 2020-10-24 14:05 编辑

lhgzbxhz 发表于 2020-10-24 13:27
你理解错了吧,1是一个字面量右值,怎么能对一个右值进行自增自减操作呢?

早上我试的时候能够运行的,我再试试

谢谢提醒! 编译器现在骗不了啦,我修改上面的说法
页: [1]
查看完整版本: 这个问题错哪了?