| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1570 人关注过本帖
标题:关于 printf 函数调用
只看楼主 加入收藏
FURY
Rank: 1
来 自:兰州
等 级:新手上路
帖 子:7
专家分:0
注 册:2015-10-10
结帖率:66.67%
收藏
已结贴  问题点数:15 回复次数:4 
关于 printf 函数调用
#include<stdio.h>
main ()
{
    int x;
    for ( x=3; x<6; x++)
          printf (  (x%2) ? ("**%d") : ( "##%d\n"), x);
}


在上面代码中 printf() 中 的表达式该如何理解?
2016-11-13 16:12
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:8 
就是if(x%2==0)输出##x,if(x%2!=0),输出**x\n--------就是**x\n和##x交替输出的意思
-----------原题没有注意到一遍有\n另一边没有,已改正~

[此贴子已经被作者于2016-11-13 23:13编辑过]


[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-11-13 17:48
FURY
Rank: 1
来 自:兰州
等 级:新手上路
帖 子:7
专家分:0
注 册:2015-10-10
收藏
得分:0 
回复 2楼 九转星河
能不能讲一下该如何理解这类简写,这类简写的规则?
2016-11-13 19:18
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
回复 3楼 FURY
可以先把printf()函数和里面与printf有关的输出东西去掉,然后化简,%d就为原来的x----原型为x%2?x:x;看上去是一样的~然后就加上输出格式再进行解读。

如果觉得这样不太好理解,那可以换一种理解方式:先把输出内容看懂,它里面有个条件运算符,就意味着输出内容有个分支。再看判断条件~

解决这类化简关键是运算先运算括号最里面的,再看里面的运算符,按照运算符运算就行了,然后把里面的结果往外套,一个一个括号解开。

不过你那题属于一些很不常见的特例,一般写法都是用if语句作为分支分开两个printf写的。

而且,一般运算都不会超过两层括号,知道运算规则就行了。好好琢磨消化一下,如果不是对方刻意出考题,这样的化简花些时间去理解就没问题的了。

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-11-13 23:10
chenchen224
Rank: 4
等 级:业余侠客
威 望:1
帖 子:61
专家分:237
注 册:2016-8-11
收藏
得分:8 
printf里面的代码是 ? :组成的三目运算符,看这个运算符是怎么用的就知道了。

我想做的,只是静静的把C学好,从此代码是爱人......
2016-11-14 14:20
快速回复:关于 printf 函数调用
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.062243 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved