我正在使用struct创建一个复数计算器,这是我的printf函数
printf("%d%c%di", sum.real, sign, sum.imag);
除了一件事,我可以纠正一切,当sum.imag部分为1或-1时,它打印出来" 1i"或" -1i"除了使用很多" if" s,我可以格式化printf函数,如果sum.imag是1或-1,它不应该打印值而不是打印"我" ??
答案 0 :(得分:1)
我认为你不能用你的格式字符串来做这件事;你必须使用if语句:
if (sum.imag == 1 || sum.imag == -1) {
printf("%d%ci", sum.real, sign);
} else {
printf("%d%c%di", sum.real, sign, sum.imag);
}
或者你可以使用三元表达式作为格式字符串,但这将是一个相当多的不可读,并且实际上是未定义的行为,虽然它应该适用于大多数现代编译器,虽然它们会产生警告(有时)未使用的论点。您可以在this question上了解详情。
printf((sum.imag == 1 || sum.imag == -1) ? "%d%ci" : "%d%c%di"), sum.real, sign, sum.imag);