首页 > 试题广场 >

已知 i=3 ,则 printf("%d", -i++);

[单选题]
已知 i=3 ,则 printf("%d", -i++); 的输出结果为(
  • -4
  • -3
  • -2
  • 以上均不对
-i++中符号运算符和自增运算符处于同一优先级,结合性从右到左
可以加个括号看:-(i++),又由于是后缀自增运算符,所以先使用i的值,表达式结束后,再执行i = i+1。
所以打印出来i = 3
发表于 2020-08-22 13:49:48 回复(0)
自增符号位于变量后面,先完成变量当前操作(变负打印)后再自增。
发表于 2019-02-22 21:37:26 回复(0)
printf (“%d”, -i++) ; 等价于 printf ("%d\n", -i);  i++;
发表于 2020-09-16 00:10:19 回复(0)
  1. 首先,根据后缀递增运算符++的结合性规则,i++的值为3,但是i的值会在表达式结束后才递增。

  2. 然后,根据一元减号运算符-的结合性规则,对i++的结果取负。由于i++的结果是3,所以-i++的结果为-3。

  3. 最后,将结果传递给printf函数的格式化字符串"%d",以打印结果----------来源ChatGPT

发表于 2023-10-29 19:32:51 回复(0)
我是这样想的i++是后增(不同于++i)的,不是直接j加上1,因此i++ 值为3,前面有负号,就是-3,不知道这样考虑是否合理
发表于 2017-08-10 21:08:27 回复(2)
编辑于 2020-06-06 15:31:49 回复(0)
printf("%d",-i++);等同于printf("-%d",i++);相当于i加了个符号打印出来,变量i内部的值并未参与计算!
发表于 2022-12-05 05:38:28 回复(0)
负号和自增++是处于同一优先级,结合方式是从右到左,本题中-i++相当于-(i++),i++的值为3,再与-结合,输出-3
发表于 2020-11-29 00:02:33 回复(0)
- 和 ++ 都是单目运算符,二者同时出现时,从右向左计算
发表于 2020-10-19 10:03:19 回复(0)
负号运算符优先级高于自增运算符优先级,应为(-3)++ i++是先赋值后i+1,表达式值为i,i的值为i+1; ++i是先i+1,后赋值,表达式值为i+1,i的值为i+1
发表于 2020-08-29 19:10:42 回复(1)
i++是现将i带入整体计算得出结果,然后i再加1。
发表于 2018-01-27 00:19:38 回复(0)