永发信息网

c语言i++类型的问题

答案:5  悬赏:40  手机版
解决时间 2021-07-25 13:45
  • 提问者网友:暗中人
  • 2021-07-24 17:43

#include<stdio.h>
main()
{
char c1,c2;
for(c1='0',c2='9';c1<c2;c1++,c2--)
printf("%\c%c",c1,c2);
printf("\n");
}这里为什么是输出0918273645

#include<stdio.h>
void main()
{
int j=-1,i=1;
switch(i++)这里第一次i=多少?
case 1:for(j=0;j<9;j++) if(i==1)break;这里的i又是等于多少?
'
'
'
'
'
}

最佳答案
  • 五星知识达人网友:野味小生
  • 2021-07-24 18:13

c1++就是c1=c1+1,c2=c2+1;代码中你的c1='0',c2='9',是字符,当执行c1++的时候,c1字符对应的ASCII码会加一,字符'0'对应的ASCII码为48,加一后为49,对应的字符为'1'.而字符'9’对应的ASCII码为57,减1后为56,对应的字符为'8',第一次输出09,再输出18,再输出27,再输出36,最后输出45。由于之间没有换行符'\n',所以最后输出0918273645。



switch(i++),表达式i++的值为1,switch(i++)等价与switch(1),随后i再加1.


case 1:for(j=0;j<9;j++) if(i==1)break;这里的i 等于 2.



i=1,switch(i++)相当于 i=1,switch(i),i=1+1;后加加先取i的值,i再加加


而i=1,switch(++i)相当于 i=1,i=i+1,switch(i);前加加先让i值加加,再去i的值

全部回答
  • 1楼网友:孤老序
  • 2021-07-24 22:20

i++是先赋值在自增,++i是先自增在赋值

前面第一次循环c1=0,c2=9,然后,c1++,c2++,此时c1=1,c2=8,c1<c2,故继续执行循环;

在第二次循环里c1=1,c2=8,c1++,c2++,c1还是小于c2,直到最后当c1=5,c2=6时退出循环。此时最后输出的值为4,5.

switch(i++) switch的结果是1,执行完这句,结果就是2了

所以.case 1:for(j=0;j<9;j++) if(i==1)break;这里i是2,不会break

  • 2楼网友:毛毛
  • 2021-07-24 21:56

这里为什么是输出0918273645?

答:由FOR循环可知C1是从0开始到9的循环,由C1++依次输出0到9的数;C2是从9到0的循环,它是由语句C2--执行的,所以依次输出9到0的数,但是由于有个执行语言体C1<C2,故C1只能循环到4,C2只能循环到5就停止循环了,又因为你依次输出的是C1,C2所以就出现了0918273645,这是C1,C2交叉输出的数字啦。

switch(i++)这里第一次i=多少?

答;第一次i是1,如果是++i的话就是2了。

case 1:for(j=0;j<9;j++) if(i==1)break;这里的i又是等于多少? 答;这里是选择语句体,这里的i是等于1的。

明白了吗?i++是先赋值再自增,++i是先自增再赋值。

  • 3楼网友:由着我着迷
  • 2021-07-24 20:22

这是两个函数吧

第一个:

结果是对的,因为C1和C2是给的数字,所以输出用的是%C输出的也是数字而不是字母

for(c1='0',c2='9';c1<c2;c1++,c2--) printf("%\c%c",c1,c2); 这是for循环

开始c1='0',c2='9',有符合c1<c2,所以执行printf打印c1,c2,就输出09

再 执行c1++,那c1就等于了1,执行c2--,c2就等于了8,又有符合c1<c2,

执行printf打印c1,c2,就输出18

再就是这样循环直到c1=4,c2=5,就输出45

再 执行c1++,那c1就等于了5,执行c2--,c2就等于了4

这就不符合c1<c2的条件,跳出for循环

就是这样。

第二个:

int j=-1,i=1; switch(i++)这里第一次i=多少?

i是等于1的,i++是先使用,再自加。执行i++后i=1但是i他自加了1

就是说在第一次执行switch语句是i是等于1 的,但到第二次又回到switch是i是等于2的

case 1:for(j=0;j<9;j++) if(i==1)break;这里的i又是等于多少? 这里的i是等于1的

你是关于i++和++i搞不清,一开始时是蛮难的,你要C语言的书好好地看看,问一问别人

  • 4楼网友:躲不过心动
  • 2021-07-24 19:11

#include<stdio.h> main() { char c1,c2; for(c1='0',c2='9';c1<c2;c1++,c2--)//初始化C1、C2,判断C1是否小于C2,若为真,则执行输出,然后C1++,C1就是‘1‘,C2就是’8‘;若为假,则循环结束 printf("%\c%c",c1,c2); printf("\n"); }

#include<stdio.h> void main() { int j=-1,i=1; switch(i++)//这里i取1后i才能进行自加 case 1:for(j=0;j<9;j++) if(i==1)break;//这里i就是2了 ' ' ' ' ' } 给你举个例子:

int i,j,a=9;

i=a++;j=++a;

先看i=a++;计算方法是:i=a;a=a+1;所以此时i=9;a=10;

再看j=++a;计算方法是:a=a+1;j=a;所以此时a=11;j=11;

若是还不明白,可以继续追问。。。

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯