鱼C论坛

 找回密码
 立即注册
查看: 4102|回复: 2

C语言中递增递减的算法

[复制链接]
发表于 2013-1-13 22:01:55 | 显示全部楼层 |阅读模式
1鱼币
#include<stdio.h>
void main()
{
  int p,q,n=8,m=8;
  p=(n++)+(n++)+(n++);
  q=(++m)+(++m)+(++m);
  printf("%d,%d,%d,%d\n",p,q,n,m);
}
这里q编译出来是31.为什么?
#include<stdio.h>
void main()
{
  int n=8;
  printf("%d\n",-n++);
  printf("%d\n",-n--);
}
最终结果是-8  -9 ,这个-9是怎么得出来的呢?
谢谢各位了

最佳答案

查看完整内容

#include void main() { int p,q,n=8,m=8; p=(n++)+(n++)+(n++); q=(++m)+(++m)+(++m); printf("%d,%d,%d,%d\n",p,q,n,m); }这种题最没节操了!!!!就只有中国才会有!!!! p=(n++)+(n++)+(n++); q=(++m)+(++m)+(++m); 在不同编译器下有不同答案 c99没有规定 也就是说不要去为了这种中国式的无节操题而蛋疼了 (绝对无节操啊!!) #include void main() { int n=8; printf("%d\n",-n+ ...
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-1-13 22:01:56 | 显示全部楼层

#include<stdio.h>
void main()
{
  int p,q,n=8,m=8;
  p=(n++)+(n++)+(n++);
  q=(++m)+(++m)+(++m);
  printf("%d,%d,%d,%d\n",p,q,n,m);
}这种题最没节操了!!!!就只有中国才会有!!!!
p=(n++)+(n++)+(n++);
  q=(++m)+(++m)+(++m);
在不同编译器下有不同答案    c99没有规定    也就是说不要去为了这种中国式的无节操题而蛋疼了
(绝对无节操啊!!)
#include<stdio.h>
void main()
{
  int n=8;
  printf("%d\n",-n++);    先采用n的值8=》答案为-8,再加1=》n=9;
  printf("%d\n",-n--);     先采用n的值9=》答案为-9,再减1=》n=8;
}
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-1-14 13:57:43 | 显示全部楼层
本帖最后由 思无邪 于 2013-1-14 13:59 编辑

同意楼上的解答啊!
int n=8;
   printf("%d\n",-n++);
//这一句其实是分两步进行的
1->printf("%d\n",-(n));此时n ==8;
2->n++; 此时 n == 9;
现在执行:
   printf("%d\n",-n--);
//这一句其实是分两步进行的
1->printf("%d\n",-(n));此时n ==9;
2->n--; 此时 n == 8;
如果再加一句
printf("%d\n",n);//结果就是 8 了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-8-9 04:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表