| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 423 人关注过本帖
标题:新手入门,高手帮忙找下错误。
只看楼主 加入收藏
a9580643
Rank: 2
来 自:江西九江
等 级:论坛游民
帖 子:60
专家分:59
注 册:2011-4-21
收藏
 问题点数:0 回复次数:8 
新手入门,高手帮忙找下错误。
本人最近几天终于找到步入C的门槛,看了点视频之后由于身边没有人可以指点,还望高手指点。
为什么输出的结果还是我输入的,而不是我想要的每个数自加1呢?

#include<stdio.h>
int main()
{
char a,b,c,d;
scanf("%d,%d,%d,%d",&a,&b,&c,&d);
a=a++,b=b++,c=c++,d=d++;
clrscr();
printf("%d%d%d%d,",a,b,c,d);
}

[ 本帖最后由 a9580643 于 2011-4-22 22:35 编辑 ]
2011-04-22 22:06
iov_aaron
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2011-3-25
收藏
得分:0 
运算符优先级问题;
a = a++ ;先赋值 再++
2011-04-22 22:55
a9580643
Rank: 2
来 自:江西九江
等 级:论坛游民
帖 子:60
专家分:59
注 册:2011-4-21
收藏
得分:0 
回复 2楼 iov_aaron
如果是用优先的运算符是不是就能得出正确结果呢。

花有重开日,人无在少年。
2011-04-22 22:58
iov_aaron
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2011-3-25
收藏
得分:0 
回复 3楼 a9580643
试试 a = ++a
应该就是 先自加  再赋值
2011-04-22 23:10
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:0 
二楼错误。
真正原因如下:
a++ 和 ++a 在执行后都会使 a 的值加一,但是两种写法的返回值却不一样。如:
a = 2;
b = a++;
a = 2;
c = ++a;
printf("%d %d %d", a, b, c);
我们会看到输出 3 2 3
为什么呢~
是因为 a++ 会先使 a 自增 1,然后返回自增之前 a 的值;++a 会先使 a 自增 1,然后返回自增以后的 a 的值。
二楼住的代码 a = a++; 是像下面这样执行的:
1. 记录 a 当前的值,即 2
2. a 自增
3. 返回所记录的 a 的值,即 2
4. 将表达式 a++ 的返回值,即 2 赋值给 a
楼主要让 a 加 1 就只写 a++ 就可以了,不要写 a = a++ 也没必要写成 a = ++a

[ 本帖最后由 voidx 于 2011-4-22 23:15 编辑 ]
2011-04-22 23:11
caity啊彻
Rank: 1
等 级:新手上路
帖 子:21
专家分:6
注 册:2011-4-19
收藏
得分:0 
你定义char,怎么是%d呢,应该是%c
2011-04-22 23:11
林发扬
Rank: 2
等 级:论坛游民
帖 子:38
专家分:56
注 册:2011-4-12
收藏
得分:0 
“a=a++,b=b++,c=c++,d=d++;”这个好像是错误的,应该是直接是
++a;
++b;
++c;
++d;
这样就好了

2011-04-23 00:21
Martinwc
Rank: 2
等 级:论坛游民
帖 子:14
专家分:19
注 册:2011-3-20
收藏
得分:0 
回复 6楼 caity啊彻
他这样做应该是想输出对应字符的ASCII码。
2011-04-23 01:00
hjywyj
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:1114
专家分:2611
注 册:2010-4-14
收藏
得分:0 
int a,b,c,d;
scanf("%d%d%d%d",&a,&b,&c,&d);
a=a++;b=b++;c=c++;d=d++;
printf("%d%d%d%d,",a,b,c,d);
或者是
int a,b,c,d;
scanf("%d%d%d%d",&a,&b,&c,&d);
a++;b++;c++;d++;
printf("%d%d%d%d,",a,b,c,d);
如果想输出ascii码值,应该是:
char a,b,c,d;
scanf("%c%c%c%c",&a,&b,&c,&d);
printf("%d%d%d%d,",a,b,c,d);
2011-04-23 09:10
快速回复:新手入门,高手帮忙找下错误。
数据加载中...
 
   



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

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