ここでhを期待していますが、gを表示しています。なんで?
char *c="geek";
printf("%c",++*c);
それundefined behaviour
はあなたが修正しようとしているからですstring literal
* cは文字を与えます'g'
が、これを適用すると++*cはあなたがやろうとしていることを意味します
*c=*c+1;
文字列とその未定義の言語標準を変更しています
char
「文字列」リテラルは読み取り専用メモリに格納され、変更するとこれが発生するため、配列を使用してこれを解決することをお勧めします。
式は次のように評価されます(++(* c))、
最初に内側の*Cが評価されるため、gが出力されます。次に、インクリメント演算子がポインタ変数Cに適用されます。このprintステートメントの後、ポインタcは次の文字「e」を指します。