问个小问题 路过的看看撒
char *str
可以这样写么 *str ++ ?
若可以 方向是从右到左的吧先
问题点数:10、回复次数:23Top
1 楼maxcai(cailin)回复于 2005-06-03 12:31:48 得分 1
好比(*str)++Top
2 楼foochow(无聊,灌水......)回复于 2005-06-03 12:33:57 得分 1
左到右吧-_-Top
3 楼sinos_sinos(挑战不是障碍 人生处处精彩)回复于 2005-06-03 12:38:36 得分 0
本意是 地址 加 的
按两位的意思是 地址里的内容 加 ?
Top
4 楼copygirl(wa!)回复于 2005-06-03 12:46:49 得分 2
都被你们给搞糊涂了,明明是右联合嘛:
#include "stdio.h"
main()
{
char *a="jfkdla;jei";
printf("%c",*a++);
printf("%c",*a++);
getch();
}
输出jfTop
5 楼foochow(无聊,灌水......)回复于 2005-06-03 12:46:49 得分 0
*(str++)Top
6 楼lbing7(向青润老大学习!!!)回复于 2005-06-03 12:48:57 得分 0
*的优先级要高
++低
你自己看看是怎么做吧!Top
7 楼sinos_sinos(挑战不是障碍 人生处处精彩)回复于 2005-06-03 12:49:49 得分 0
不加 () 就不是 从右到左么?
Top
8 楼zsh6709(世界上没有后悔药吃的!!!)回复于 2005-06-03 12:56:33 得分 1
写法无所谓,重要的是理解:
*p++ 运算首先访问*p,然后使p的值(数值)增1;
(*)p++ 运算首先访问*p,然后使*p的值(地址值)增1;
知道了吗?Top
9 楼Cuiql(向前冲,向后看)回复于 2005-06-03 12:57:33 得分 1
*比++要高的.
Top
10 楼sinos_sinos(挑战不是障碍 人生处处精彩)回复于 2005-06-03 13:02:11 得分 0
#include <stdio.h>
main()
{
char *a="jfkdlajei";
while(*a){
if (*a !='i')
{
printf("%c",*a++);
}
}
}
怎么理解啊?Top
11 楼sinos_sinos(挑战不是障碍 人生处处精彩)回复于 2005-06-03 13:05:26 得分 0
printf("%c",*a++); 要是 给 * 加个() 就 错
给 *a 加 个括号 调试出异常
感觉是 从右到左的 先 a++ 后 再* 取内容 结果是 jfkdlajeTop
12 楼sinos_sinos(挑战不是障碍 人生处处精彩)回复于 2005-06-03 13:17:20 得分 0
知道了 单操作数 是 从右向左的吧???
只有这样才能解释通啊
和赋值一样 吧Top
13 楼maxcai(cailin)回复于 2005-06-03 19:36:16 得分 1
sorry *_@
http://www.cnread.net/cnread1/dnwl/cxsj/c/cyyb/010.htm
++ 比 * 高一级
* (str++)
再次说对不起啦 :(Top
14 楼hanxingwuqing(无效参数)回复于 2005-06-03 19:55:50 得分 0
*str ++ 等价于 * (str++)
都是取 *str ,然后str 增加 1
Top
15 楼pippen2333(学习是为了赚钱)回复于 2005-06-03 20:00:56 得分 0
(*str) ++,*优先级高Top
16 楼QunKangLi(心里面疼得有点发酸 一定是有雾来了 打湿了我的眼眶)回复于 2005-06-03 21:37:54 得分 0
*(str++),++优先级高,++运算返回指针,*与返回的指针运算得旧指针指向的内容。Top
17 楼zhangyu21101213(羽)回复于 2005-06-03 23:19:26 得分 0
++和*是同优先级,但是右向左的结合方向啊
怎么会有这么多人说是*比++的优先级高啊?Top
18 楼flamedoor(flamedoor)回复于 2005-06-03 23:31:51 得分 1
*和++的优先级一样,只是这类运算符的结合方式是从右向作
所以,相当于 * (str++)Top
19 楼foochow(无聊,灌水......)回复于 2005-06-04 00:02:03 得分 0
char *str="asdfg";
*str++;
后缀++的优先级要比*高,这意味着++将对str进行操作,而不是对*str进行操作
*++str;
前缀++和*的优先级一样高,但是它们是从右到左的结合的,所以str将加1......-_-
Top
20 楼zero_degree()回复于 2005-06-04 00:13:38 得分 0
确实++的优先级高Top
21 楼tsocpp(小黑子)回复于 2005-06-04 00:22:32 得分 2
“++”、“--”、指针运算符“*”和取地址运算符“&”的优先级相同,按自右向左的方向结合。
对于*str++,先进行“++”运算,在进行“*”运算,因“++”是后置运算符,它等同于取*str的值参加运算,再使指针str的值加1。如:
int a[5]={100,200,300,400,500},*str,b;
str=&a[0],b=*str++;
执行的结果是:b的值为100,str指向数组a的第一个元素a[1]。
表达式*str++等同于*(str++)表达式Top
22 楼tsocpp(小黑子)回复于 2005-06-04 01:31:18 得分 0
不好意思,修正一下刚才的错误:
表达式*str++应该等同于(*str)++表达式,而不是*(str++)
Top
23 楼bugebear3(bug)回复于 2005-08-08 09:41:23 得分 0
*和++的优先级是一样的,只是结合方向是右结合罢了,建议认为++优先级高于*的同学多找点资料看看.Top




