Cの文字列リテラルに追加してインデックスをシフトすることはできません

相生優子

私はCで有名な「fizzbuzz」スクリーニングの質問をコードゴルフしていました(この質問のポイントは、コードゴルフではなく、C演算子がどのように機能するかを理解することです。トピックから投票しないでください^^ ")、この行を思いつきました:

puts(&"Fizz\0FizzBuzz"[i%15?i%3?9:0:5]));

私はただできると思ったので、これは私には少し不必要に思えます:

puts("Fizz\0FizzBuzz"+i%15?i%3?9:0:5));

しかし、最初のセグメンテーション違反はそうなるでしょうFizz私の質問は、文字列リテラルに単に追加するだけではインデックスを付けられないのはなぜですか?に加数をキャストしようとしましたsize_tが、それは何の役にも立ちません。任意のchar *p(またはそのことについては任意の型へのポインタ)の場合、p[n]は単なる構文糖衣で(*p+n)あり、(私は思う)&*p == p.

では、なぜ&p[n] != p+nですか?

編集:私はちょうど私のを捕まえていたことが判明しFizz\0FizzBuzz"+i%15ました?:いまいましい演算子の優先順位。私はバカです。:)

セルゲイ・カリニチェンコ

コードの問題は、括弧がないことです。これは完全に正常に機能します。

puts("Fizz\0FizzBuzz"+(i%15?i%3?9:0:5));

元のコードでは、最初の? :演算子の条件は次のとおりです。

"Fizz\0FizzBuzz"+i%15

これはあなたが意図したものではありません。

デモ。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

ラムダを使用してリストアイテムをインデックスでフィルタリングすることはできません

分類Dev

`com.test.FilterModel`のインスタンスを作成することはできません。文字列値からデシリアライズするには、no文字列引数コンストラクタ/ファクトリメソッド

分類Dev

Springを使用しているときに、チェックスタイルメッセージ「ユーティリティクラスにデフォルトのパブリックコンストラクターを含めることはできません」を抑制する方法

分類Dev

ジャクソン - タイムゾーンと日時をデシリアライズすることはできませんが「未解析のテキストをインデックス23で検出した」オフセット

分類Dev

C-テキストファイルから配列への文字列のリストを読み取って処理することはできません

分類Dev

追加ボタンをクリックして複数のテキストをクリックして追加のCSSを表示することはできません

分類Dev

デフォルトのコンストラクターから「this」にデシリアライズすることはできませんか?

分類Dev

配列をループするときのjqエラー:文字列「<key>」で配列にインデックスを付けることができません

分類Dev

ヒント表示スクリプトをデフォルトのコンテンツにリセットすることはできません

分類Dev

ヒント表示スクリプトをデフォルトのコンテンツにリセットすることはできません

分類Dev

リモートデスクトップクライアントが壊れていますシステムはmstsc.exe.muiで指定されたファイルを見つけることができません

分類Dev

C ++-クラステンプレートのメンバーのオフライン定義にデフォルトの引数を追加することはできません

分類Dev

直接文字と同じクラスのvector [1]でリストにインデックスを付けることはできません(後者はインデックスを付けることができます)

分類Dev

スラッシュを含む文字列をファイルとして扱わずにsedに渡すにはどうすればよいですか?(そのようなディレクトリやファイルはありません)

分類Dev

プロパティはインターフェイスの文字列インデックスに割り当てることができません

分類Dev

プロパティはインターフェイスの文字列インデックスに割り当てることができません

分類Dev

ライブラリのフリーガル映画を介してビデオをストリーミングすることはできません

分類Dev

ライブラリのフリーガル映画を介してビデオをストリーミングすることはできません

分類Dev

[Powershell / SharePoint]誰かが私のスクリプトを確認して7日より古いSharepointリストアイテムを削除できますか?「Null配列にインデックスを付けることができません」を取得する

分類Dev

ObjectMapperは春ブーツ2へのアップグレード後にデフォルトコンストラクタなしにデシリアライズすることはできません

分類Dev

トグルをクリックしてクラスを非表示にすることはできませんか?

分類Dev

jenkinsを使用して作成されたiOS9にアプリビルドをインストールできません。エラーは、シンボリックリンクに絶対パスがあることを示しています

分類Dev

TypeScriptの警告を無視せずにオブジェクトにキーによる値があるかどうかをテストするにはどうすればよいですか:「文字列」を使用して型にインデックスを付けることはできませんか?

分類Dev

Tkinterエントリボックス、一度に1つの文字列を入力して表示することはできません

分類Dev

bashスクリプト内の名前に特殊文字が含まれるファイルへのシンボリックリンクをエコーまたは作成することはできません

分類Dev

Inno Setupインストーラーによって起動された私のバッチは、そこにあるのに「システムは指定されたファイルを見つけることができません」と言います

分類Dev

私は、Javaに新しいですし、私のコードは、テキストファイルと文字の発生の両方をプリントアウトしていない理由を把握することはできません

分類Dev

[スイッチ]をクリックしてもう一度クリックしてデフォルトの状態に戻すまで、onCheckedChangedからボタンを呼び出すことはできません

分類Dev

フラグメントを「クエリ」タイプのオブジェクトとしてここに拡散することはできません

Related 関連記事

  1. 1

    ラムダを使用してリストアイテムをインデックスでフィルタリングすることはできません

  2. 2

    `com.test.FilterModel`のインスタンスを作成することはできません。文字列値からデシリアライズするには、no文字列引数コンストラクタ/ファクトリメソッド

  3. 3

    Springを使用しているときに、チェックスタイルメッセージ「ユーティリティクラスにデフォルトのパブリックコンストラクターを含めることはできません」を抑制する方法

  4. 4

    ジャクソン - タイムゾーンと日時をデシリアライズすることはできませんが「未解析のテキストをインデックス23で検出した」オフセット

  5. 5

    C-テキストファイルから配列への文字列のリストを読み取って処理することはできません

  6. 6

    追加ボタンをクリックして複数のテキストをクリックして追加のCSSを表示することはできません

  7. 7

    デフォルトのコンストラクターから「this」にデシリアライズすることはできませんか?

  8. 8

    配列をループするときのjqエラー:文字列「<key>」で配列にインデックスを付けることができません

  9. 9

    ヒント表示スクリプトをデフォルトのコンテンツにリセットすることはできません

  10. 10

    ヒント表示スクリプトをデフォルトのコンテンツにリセットすることはできません

  11. 11

    リモートデスクトップクライアントが壊れていますシステムはmstsc.exe.muiで指定されたファイルを見つけることができません

  12. 12

    C ++-クラステンプレートのメンバーのオフライン定義にデフォルトの引数を追加することはできません

  13. 13

    直接文字と同じクラスのvector [1]でリストにインデックスを付けることはできません(後者はインデックスを付けることができます)

  14. 14

    スラッシュを含む文字列をファイルとして扱わずにsedに渡すにはどうすればよいですか?(そのようなディレクトリやファイルはありません)

  15. 15

    プロパティはインターフェイスの文字列インデックスに割り当てることができません

  16. 16

    プロパティはインターフェイスの文字列インデックスに割り当てることができません

  17. 17

    ライブラリのフリーガル映画を介してビデオをストリーミングすることはできません

  18. 18

    ライブラリのフリーガル映画を介してビデオをストリーミングすることはできません

  19. 19

    [Powershell / SharePoint]誰かが私のスクリプトを確認して7日より古いSharepointリストアイテムを削除できますか?「Null配列にインデックスを付けることができません」を取得する

  20. 20

    ObjectMapperは春ブーツ2へのアップグレード後にデフォルトコンストラクタなしにデシリアライズすることはできません

  21. 21

    トグルをクリックしてクラスを非表示にすることはできませんか?

  22. 22

    jenkinsを使用して作成されたiOS9にアプリビルドをインストールできません。エラーは、シンボリックリンクに絶対パスがあることを示しています

  23. 23

    TypeScriptの警告を無視せずにオブジェクトにキーによる値があるかどうかをテストするにはどうすればよいですか:「文字列」を使用して型にインデックスを付けることはできませんか?

  24. 24

    Tkinterエントリボックス、一度に1つの文字列を入力して表示することはできません

  25. 25

    bashスクリプト内の名前に特殊文字が含まれるファイルへのシンボリックリンクをエコーまたは作成することはできません

  26. 26

    Inno Setupインストーラーによって起動された私のバッチは、そこにあるのに「システムは指定されたファイルを見つけることができません」と言います

  27. 27

    私は、Javaに新しいですし、私のコードは、テキストファイルと文字の発生の両方をプリントアウトしていない理由を把握することはできません

  28. 28

    [スイッチ]をクリックしてもう一度クリックしてデフォルトの状態に戻すまで、onCheckedChangedからボタンを呼び出すことはできません

  29. 29

    フラグメントを「クエリ」タイプのオブジェクトとしてここに拡散することはできません

ホットタグ

アーカイブ