📜  C |运营商|问题12

📅  最后修改于: 2021-05-29 13:06:36             🧑  作者: Mango

#include 
int main() 
{ 
  char *s[] = { "knowledge","is","power"}; 
  char **p; 
  p = s; 
  printf("%s ", ++*p); 
  printf("%s ", *p++); 
  printf("%s ", ++*p); 
    
  return 0; 
}

(一)就是力量
(B) nowledge nowledge s
(C)较低
(四)诺言知识是答案: (B)
说明:让我们考虑第一个printf()中的表达式++ * p。由于前缀++和*的优先级相同,因此关联性成为图片。首先评估* p,因为前缀++和*都是从右到左的关联。当我们将* p加1时,它开始指向“知识”的第二个字符。因此,第一个printf语句打印“ nowledge”。
让我们考虑第二个printf()中的表达式* p ++。由于后缀++的优先级高于*,因此首先评估p ++。并且由于它是psotfix ++,因此在此表达式中使用了p的旧值。因此,第二个printf语句打印“ nowledge”。
在第三个printf语句中,使用p的新值(由第二个printf更新),并且第三个printf()打印“ s”。

想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。