[英]string printed in reverse without reversing in the code
我試圖通過三元運算符聲明它來打印字符串。 代替任何錯誤,它會反向打印字符串。
有人可以解釋一下嗎?
我期望基於輸入將字符串打印為even
或odd
。
#include<stdio.h>
void main()
{
int a;
char *num;
printf("Enter a number: ");
scanf("%d", &a);
num = (a % 2) ? 'odd' : 'even';
printf("Its %s number", &num);
getch();
}
'odd'
和'even'
是整數字符常量。
根據C標准(6.4.4.4字符常量)
10整數字符常量的類型為int。 包含映射到單字節執行字符的單個字符的整數字符常量的值是解釋為整數的映射字符表示形式的數值。 包含多個字符(例如,“ ab”)或不映射到單字節執行字符的字符或轉義序列的整數字符常量的值是實現定義的。
所以在這次通話中
printf("Its %s number", &num);
您正在嘗試將變量num
的地址輸出為要嘗試輸出字符串的字符串的地址,但是num
並不指向字符串。
您必須使用字符串文字而不是字符常量。
你的意思是以下
num = (a % 2) ? "odd" : "even";
printf("Its %s number", num);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.