C语言一道题目

[复制链接]
查看11 | 回复4 | 2011-1-1 07:19:45 | 显示全部楼层 |阅读模式
int n=2;
if (n++%3)printf(“*”);
else printf(“ # ”);
————if (n++%3)printf(“*”);————这句是什么意思啊?

回复

使用道具 举报

千问 | 2011-1-1 07:19:45 | 显示全部楼层
a是第i个元素,a相当于指向数组首地址的指针,a+i是指针向后偏移i个元素,但它仍然是指针,指向第i个元素的地址*(a+i)取指向地址的里面的值,所以*(a+i)相当于a补充:如果a是一个二维数组,a还是可以写成*(a+i)的因为,虽然a是地址,当然了也可以看成是一维数组的一个元素,每个元素又是一个一维数组而*(a+i)也是地址啊,因为a是二维数组,也可以把a看成指针的指针,即二维指针,那么,*(a+i)就可以看成是一个一维指针,其值也就是个地址了。所以,他们还是等价的
回复

使用道具 举报

千问 | 2011-1-1 07:19:45 | 显示全部楼层
当(n++%3)为真时,即不能被3整除的就输出*否则输出#
回复

使用道具 举报

千问 | 2011-1-1 07:19:45 | 显示全部楼层
第一步,先看if后面括弧,里面是n++%3,这个的意思就是先用n去除3求余数第二步,是n自加1第三步,是判断第一步的余数是否为非0.如果为非0的话就执行后面的printf(“*”);
回复

使用道具 举报

千问 | 2011-1-1 07:19:45 | 显示全部楼层
n=2n++=2n++对3求余则输出*n=3n++=3n++对3求余则输出#以此类推
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行