独揽伊人醉风流 发表于 2015-7-9 19:20:37

新手关于-i++的求职,大神帮忙

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

}
最后一个printf("%d\n",-i++);运算结果为啥是-7

哥斯拉不说话 发表于 2015-7-9 20:46:36

      printf("%d\n",++i);    // 执行完这句之后i=9
      printf("%d\n",--i);   //i=8
      printf("%d\n",i++);   // i=9
      printf("%d\n",i--);   // i=8
      printf("%d\n",-i--);   // i=7
      printf("%d\n",-i++);// 输出 -7

牡丹花下死做鬼 发表于 2015-7-9 20:52:55

自己搜索论坛~

1164323996 发表于 2015-7-9 22:18:14

我也是刚刚学c 现在刚刚学完前两章 #include <stdio.h>
void main ()
{
         int i=8;
         printf("%d\n",++i);   这里是9 因为 ++在前面 所以i要加1后在输出 这时i=9 挨着下面的--i (i=9)
         printf("%d\n",--i);   (i=9 )--i就等于8了
         printf("%d\n",i++);上面的i=8 然而i++++在后面(后缀) i要先输出 再加1 所以输出的的是8 这时i就等于9了接着下面这样类推
         printf("%d\n",i--);输出9 然而输出后i--=9-1等于i=8
         printf("%d\n",-i--); 输出-8                -i--=-(8-1)
         printf("%d\n",-i++); -7

}

独揽伊人醉风流 发表于 2015-7-9 23:28:27

1164323996 发表于 2015-7-9 22:18
我也是刚刚学c 现在刚刚学完前两章 #include
void main ()
{


谢谢了,我懂了{:1_1:}

yonjay 发表于 2015-7-10 19:28:16

#include<stdio.h>

void main()
{
        int i=5,j=5,p,q,x,y,a=2,b=2;
        p=(i++)+(i++)+(i++);
        q=(++j)+(++j)+(++j);

        x=a+++a+++a++;
        y=++b+++b+++b;

        printf("%d,%d,%d,%d,%d\n",p,q,i,j);

        printf("%d,%d,%d,%d,%d\n",x,y,a,b);
}


对这个程序的结果我不是很理解,希望大家能解答一下

哥斯拉不说话 发表于 2015-7-10 19:51:09

yonjay 发表于 2015-7-10 19:28
#include

void main()


感觉研究这种题除了应付考试外貌似没什么用。

yonjay 发表于 2015-7-10 20:47:49

哥斯拉不说话 发表于 2015-7-10 19:51
感觉研究这种题除了应付考试外貌似没什么用。

求详解。。{:5_91:}

哥斯拉不说话 发表于 2015-7-10 22:05:47

yonjay 发表于 2015-7-10 20:47
求详解。。

程序有问题,x,y 赋值的那两行,不能那样写,必须加括号

哥斯拉不说话 发表于 2015-7-10 22:09:38

yonjay 发表于 2015-7-10 20:47
求详解。。

比如我写了一个
int a=1, b;
b = a+++a;
这里就有两种可能性
1. b = (a++)+a;
2. b = a+(++a);
所以不能这样写,必须加括号,而且你不加编译不会通过。

yonjay 发表于 2015-7-12 20:55:42

哥斯拉不说话 发表于 2015-7-10 22:09
比如我写了一个
int a=1, b;
b = a+++a;


哦~有道理

yonjay 发表于 2015-7-12 20:57:42

正好有两个编程题,嘿嘿
1、字符处理:输入某字符串,以#结束。输出的字符串要满足以下要求:1,删除元音字母(包括大小写的)。2,辅音字母前加"." 3, 字母大小写互换。例如:输入tour#,输出.T.R
一坐标轴表示某道路,从0开始到L,整数位置上都种有一棵树。现该路修建地铁,要砍掉铁路线路上的树木(铁路可以重叠)。例如:L等于10,铺设4条铁路,坐标是1到2,2到3,2到8,3到5。那么1到8坐标点的树都要砍掉,剩下0,9,10三棵。程序要求,输入L,输入铺设铁路条数m。然后输入m组铁路的坐标。求剩下多少棵树。
这个你会吗?

李小胖 发表于 2015-7-12 21:26:36

1164323996 发表于 2015-7-9 22:18
我也是刚刚学c 现在刚刚学完前两章 #include
void main ()
{


printf("%d\n",-i++); -7
求这个的步骤,我也不明白,谢啦

mse9591 发表于 2015-7-13 00:57:48

李小胖 发表于 2015-7-12 21:26
printf("%d\n",-i++); -7
求这个的步骤,我也不明白,谢啦

printf("%d\n",i--);    //此步骤运算之前i值为9,因为要输出的为i--      要后运算,所以这步骤结束后i值输出                      为9               然后运算i--   此时i值为8
printf("%d\n",-i++); //此步运算之前i值为8   因为i++是之后运算的,所以此时i值仍为8,前面有符号所以加上“-”输出为-8            然后再运算i++    所以i值就变为7,
printf("%d\n",-i++); //此步运算之前i值为7      因为i++是之后运算的,所以此时i值仍为7   前面有符号所以加上“-”输出为-7             然后再运算i++    所以i值就变为8

因为后面没有输出的函数了,所以i值也就不会再输出如果你后面加个printf("%d\n",i);    i值会输出8

哥斯拉不说话 发表于 2015-7-13 12:52:35

yonjay 发表于 2015-7-12 20:57
正好有两个编程题,嘿嘿
1、字符处理:输入某字符串,以#结束。输出的字符串要满足以下要求:1,删除元音 ...

像这样吗?
页: [1]
查看完整版本: 新手关于-i++的求职,大神帮忙