MENU
  • このブログに関して
  • 特集アーカイブ
    • Windows更新情報
    • Windows11使いこなし
    • Windows 10使いこなし
    • macOS/iOS/iPadOS更新情報
    • macOS使いこなし
    • iOS使いこなし
    • Webブラウザ更新情報
  • ソフトウェア
  • Windows
  • Mac
  • iOS
  • セール
PCやMacの性能を100%発揮
ソフトアンテナ
  • このブログに関して
  • 特集アーカイブ
    • Windows更新情報
    • Windows11使いこなし
    • Windows 10使いこなし
    • macOS/iOS/iPadOS更新情報
    • macOS使いこなし
    • iOS使いこなし
    • Webブラウザ更新情報
  • ソフトウェア
  • Windows
  • Mac
  • iOS
  • セール
ソフトアンテナ
  • このブログに関して
  • 特集アーカイブ
    • Windows更新情報
    • Windows11使いこなし
    • Windows 10使いこなし
    • macOS/iOS/iPadOS更新情報
    • macOS使いこなし
    • iOS使いこなし
    • Webブラウザ更新情報
  • ソフトウェア
  • Windows
  • Mac
  • iOS
  • セール
  1. ホーム
  2. ソフトウェア
  3. これがわかればC言語雑学王!?謎のオペレータ「??!??! 」が話題に

これがわかればC言語雑学王!?謎のオペレータ「??!??! 」が話題に

2015 4/20
ソフトウェア
2015年4月20日 2015年4月20日
  • URLをコピーしました!

File0001438084802

最近Redditで、C言語のオペレータ「??!??!」が一体何を意味しているのかが、話題となっていました(Reddit)。これは、もともと2013年にStack Overflowに書き込まれた「次のソースコードがコンパイルできるし、動かすこともできるけれど、オペレータ『??!??!』が何を意味しているかわからない」という質問に由来しています。

!ErrorHasOccured() ??!??! HandleError();

文字化けではなく実際に合計6文字からなるオペレータなのです。C言語経験者でも目を疑うこのソースコード、実際は意外と簡単な内容を意味しています。

目次

トライグラフと呼ばれるものだった

Stack Overflowで回答者が答えているように、「??!」はトライグラフと呼ばれ3文字が「|」に変換されます。これが2個繰り返されるということは

!ErrorHasOccured() ??!??! HandleError();

↑これは

!ErrorHasOccured() || HandleError();

↑これになるということです(単なるor)。

わかってしまえば簡単ですが、知らないと検索するのにも苦労しそうですね。

Wikipediaによると、トライグラフとは「ISO 646 に共通して含まれる文字だけでソースコードを書くための表記法」で、例えばVisual Studio 2013などでも実際に使うことができ、ドキュメントもあります。

2015 04 20 004816

Visual Studio 2013で実際にコンパイルできました。ただしコンパイルオプションで「/Zc:trigraphs」を指定する必要はあります。ソースコードが難解になることや、デフォルトで無効化されていることから考えても、チーム開発ではトライグラフを使うのはさけたほうが良さそうです。

ソフトウェア
C operator
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
  • Open-Source iOS Apps - オープンソースのiOSアプリのリンク集
  • Beep.js - たった1行でシンセサイザーを実現するJavaScriptライブラリ

関連記事

  • AutoHotkey v2が正式に主要バージョンに
    2023年1月30日
  • 画面録画機能を搭載したMicrosoftの「Snipping Tool」の正式公開が一歩近づく
    2023年1月30日
  • M1/M2/Intel MacでWindows 11を実行できる「UTM 4.1」
    2023年1月29日
  • Microsoft、プロジェクト「Phoenix」でEdgeブラウザを刷新
    2023年1月28日
  • OpenCore Legacy Patcher 0.6.1がリリース - 非互換MacでmacOS Venturaを動かすためのツール
    2023年1月26日
  • Windows Terminal Preview 1.17がリリース - Micaサポートとプロセス再起動など
    2023年1月26日
  • Microsoft Edgeに「ウィンドウの分割」機能が導入。2つのページを同時に閲覧可能に
    2023年1月25日
  • TapbotsのMastodonクライアントが「Ivory」が正式に公開 - サブスクリプションライセンスを導入
    2023年1月25日
スポンサーリンク
サイト内検索
特集アーカイブ
  • Windows更新情報
  • Windows11使いこなし
  • Windows 10使いこなし
  • macOS/iOS/iPadOS更新情報
  • macOS使いこなし
  • iOS使いこなし
  • Webブラウザ更新情報
Feedlyに登録

登録お願いします!

follow us in feedly

人気記事
  • Lp logo 3 1000x657 質問に対し流暢な日本語で回答してくれる「ChatGPT」が公開 - 試し方はこちら
  • S 20230119 111028 Microsoft、Windows 11 22H2でシステムの復元ポイントがアプリを破壊する事を確認
  • S 20230125 112030 Microsoft Edgeに「ウィンドウの分割」機能が導入。2つのページを同時に閲覧可能に
  • S 20221123 111042 Windows 11のタスクトレイ時計の秒表示を有効にする方法
  • Mac mini M2 2023 【悲報】M2搭載ローエンドMac miniとMacBook ProのSSD速度は前世代より低下
  • 1674457395 with special id enabled refs win 11 install fails source xeno twitter  1 MicrosoftがWindows 11でReFSをサポート。そろそろNTFSからの移行が実現か?
  • S 20221206 204658 メニューバーから対話できる「ChatGPT for Mac」がリリース
  • S 20210923 114221 Windows 11で「管理ツール」を開く方法
  • S 20220219 172234 【Tips】iPhoneで撮影した特定の写真だけをiCloudに保存する方法
  • S 20230127 111050 Windows 11 Version 22H2用のプレビューアップデートKB5022360が公開 - タスクバー検索やIMEの不具合修正
カテゴリー
タグ
Amazon Android App Apple applewatch appsale Chrome Edge Firefox Git Github Google iOS iPad ipados iPhone iPhone6 iphone7 iphone8 iTunes JavaScript Kindle Linux Mac MacBook MacBookPro macos Microsoft Nintendo OS X OSX Parallels Rails Ruby Sale Steam Swift Twitter VMware Windows windows7 windows10 windows11 Wine Yosemite
新着記事
  • AmazonでJUNNUPの戻る/進む対応ワイヤレストラックボールが51%OFFとなるセールが実施中
  • 画像の圧縮とリサイズを同時に実行できる「Photo Size Optimizer」がセール中!本日のアプリセールまとめ
  • Carbonyl - ターミナル内で実行できるChromiumブラウザ
src256
ソフトアンテナを開発しています。

Windows/Mac/Linux全部使用中。ソフトウェア、ハードウェアいろいろなモノに興味があります。

好きなエディタはEmacs。好きな言語はRubyです。


srcw.net
  • プライバシーポリシー

© 2022 ソフトアンテナ

目次