Ich habe folgende C-Anwendung geschrieben:Warum String wird immer auf mit „+“ opeartor in printf getrimmt
#include <stdio.h>
struct Book {
int a;
int b;
};
int main() {
struct Book book;
book.a = 10;
book.b = 20;
printf("The value set for struct a " + book.a);
return 0;
}
I +
innen printf
verwendet haben erwartet, dass es die Zeichenfolge verketten, sondern wird zunächst 10
Charakter Trimmen und geben die Ausgabe wie folgt, ich weiß, ich sollte %d
verwenden und book.a
als zweites Argument, übergeben, aber warum printf
trimmt meine Zeichenfolge?
set for struct a
Der '+' Operator verketten Zeichenfolge nicht mit ganzen Zahlen. –
Sie machen Zeiger-Arithmetik, nicht Verkettung. – tkausl
Ein String-Literal zerfällt in einen Zeiger auf sein erstes Element. Die Verwendung von Operator + auf einem Zeiger erhöht den Zeiger vorwärts. Sie können den Rest herausfinden. – DeiDei