C++相談室 part148

■ このスレッドは過去ログ倉庫に格納されています
2020/01/31(金) 20:54:06.26ID:Nt0XFA2s
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。

前スレ
C++相談室 part147
https://mevius.5ch.net/test/read.cgi/tech/1576659413/
このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.105【環境依存OK】
http://mevius.5ch.net/test/read.cgi/tech/1556142878/

■長いソースを貼るときはここへ。■
 http://codepad.org/
 https://ideone.com/

[C++ FAQ]
https://isocpp.org/wiki/faq/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)
456デフォルトの名無しさん
垢版 |
2020/02/08(土) 14:48:48.31ID:v1IBJgnW
>>383
graphviz / python
2020/02/08(土) 14:51:43.97ID:P2cF6ghb
graphvizは主要なLinuxの標準リポジトリに入ってるから助かる
458デフォルトの名無しさん
垢版 |
2020/02/08(土) 14:52:17.78ID:v1IBJgnW
>>403
浮動小数点数なら桁落ちとか気にしてんのかなーとか勘繰る
2020/02/08(土) 15:10:32.80ID:pjdiRHlo
>>403
整数の場合だと、括弧を付けてある部分に何らかのまとまった意味があるのかも知れない。

数学や物理学では、計算を減らすために式変形していくが、最終的な式は元々の意味が分からなくなってしまうことがある。

その場合には括弧で囲ったくらいで意味が分かり易くなることは少ない。

しかし、そのケースの場合は、括弧で括ると何か意味が分かり易くなると考えた間ロウ製がある。
2020/02/08(土) 15:11:02.15ID:pjdiRHlo
>>459
間ロウ製 ---> 可能性
2020/02/08(土) 15:12:02.03ID:JKzazDKJ
>>455
>if ( b == TRUE ) // 駄目
-1をTRUE扱いしたくないのであればこれが唯一正しい
2020/02/08(土) 15:45:10.44ID:yr4lhGWD
MSDNの書き間違いかもしれないが、Win32 APIの一部にも「成功時はTRUEを返す」という
仕様の関数があるんだよな。
2020/02/08(土) 15:54:04.38ID:pjdiRHlo
>>461
そもそも、-1 は TRUE 扱いすると言うのが C/C++ の伝統や文化。
-1 と TRUE を分けて扱うのは、特殊な独自仕様。

>>462
Win32 API の一部どころか、ハンドル値を返す以外のほとんど全ての関数が、
成功すれば TRUE を返す。
2020/02/08(土) 16:07:20.11ID:yr4lhGWD
おいおい、#define TRUE 1のTRUEと真(true)の区別がぐちゃぐちゃだぞ。

BOOLを返すWin32 APIの多くは「成功時はFALSE(0)以外の値を返す」という仕様になっている。
2020/02/08(土) 16:16:01.81ID:24Q9Tmjg
宗派論争だな
466デフォルトの名無しさん
垢版 |
2020/02/08(土) 16:19:44.70ID:RKzyJDHj
C++にはtrueがあるので積極的に使っていこうと思います。
2020/02/08(土) 16:36:41.39ID:pjdiRHlo
>>464
なるほど確かに Win32 の BOOL LineTo(HDC hdc, int nXEnd, int nYEnd)の 戻り値は、

If the function succeeds, the return value is nonzero.
If the function fails, the return value is zero.

のように、成功時には 1 や TRUE ではなく、「非0」を返すと書いてある。
468デフォルトの名無しさん
垢版 |
2020/02/08(土) 16:45:19.38ID:RKzyJDHj
キャッシュかキャッシュでないかで速度が変わる。
これは驚き。
2020/02/08(土) 16:50:34.75ID:LleYumKd
バカ==TRUE
2020/02/08(土) 17:21:59.80ID:+a4Pmd4C
○ if(b) if(!b)
○ if(b == FALSE) if(b != FALSE)
× if(b == TRUE) if(b != TRUE)

WinAPI使いには常識だと思ってたんだが
471デフォルトの名無しさん
垢版 |
2020/02/08(土) 17:32:20.19ID:RKzyJDHj
そういうのをみんなで共有しましょうって事で、たらこさんが2chを作ったんですよ。
2020/02/08(土) 17:40:43.90ID:yr4lhGWD
>>470
常識というか思い込み。
大半のFALSE/FALSE以外を返す関数なら上で良いが、>>462のようにTRUEを返すなら当然
TRUEと比較しなきゃ正しくない。
2020/02/08(土) 17:57:14.84ID:+a4Pmd4C
本当にそんなのあるの?
戻り値BOOLでFALSE(0)とTRUE(1)以外の値をTRUEと違う意味を表現するために意図的に返す奴があるってこと?
具体例どうぞ
2020/02/08(土) 18:25:19.22ID:JRIqyhqH
>>446
>C/C++ では、b が「非0」、つまり「0 以外」だとすべて真(true) と考えるのが伝統。
>if ( b == TRUE ) と書くのは間違い。

それは b の型が int だったら、そのとおりだけれども、>>438 をみるかぎり bool b なんでしょう?

はっ!これが老害というやつですか…
2020/02/08(土) 18:26:30.54ID:2SU4KPt5
>>473
GetMessage という基本的な API からして変則的だから……
2020/02/08(土) 18:31:14.43ID:yr4lhGWD
>>462に書いたMSDNのは単にドキュメントの間違いという可能性もあるけどね。
それとは別に、TRUE/FALSe以外に-1を返すAPIがあるのは有名だろう。
いずれにしても仕様をちゃんと確認してそれに従った扱いをすべきで、思い込みは禁物ってこと。
2020/02/08(土) 18:33:32.51ID:2SU4KPt5
>>475
GetMessage の返却値の場合は一応は TRUE の特殊な場合として -1 の状況もある
って感じだから TRUE とは別の場合を意味する第三の状況というわけではないな。
478デフォルトの名無しさん
垢版 |
2020/02/08(土) 18:34:27.09ID:RKzyJDHj
判定マクロないの。
2020/02/08(土) 18:44:49.18ID:2SU4KPt5
>>466
bool も式にまざるといつのまにか int に暗黙に型変換されちゃったりして、
やっぱりこう、あまりしっかり区別されてる気がしねぇなあと思うことも多いよ。
Windows API で使われている BOOL よりはかなりマシではあるけど。
2020/02/08(土) 18:46:46.57ID:JKzazDKJ
GetMessage()が-1を返したときはエラーなんじゃわ;
2020/02/08(土) 18:51:51.40ID:+a4Pmd4C
「WM_QUITでない」という条件における真(0以外)の中の特殊な場合(エラー)に-1ってことなのね
理屈はわからんでもないけど変なの
本当はそんなのの戻り値に「BOOL」なんていうtypedefを使うのがそもそもおかしいんだけどWinAPIだから仕方ないな
482デフォルトの名無しさん
垢版 |
2020/02/08(土) 18:52:06.88ID:RKzyJDHj
>>480
行末の;イイね。
483デフォルトの名無しさん
垢版 |
2020/02/08(土) 18:52:56.77ID:RKzyJDHj
30年前のAPIだしね。
2020/02/08(土) 18:55:20.75ID:2SU4KPt5
今なら適当なフレームワークをかぶせて使うもんだと思う。
素でメッセージの処理とか面倒くさすぎるし。
2020/02/08(土) 19:15:43.34ID:mZtPBS5R
klocworkがboolメンバ変数にportingがどうのって言ってくるのがうざい
486デフォルトの名無しさん
垢版 |
2020/02/08(土) 20:18:51.44ID:RKzyJDHj
>>485
これ何億円するの?
2020/02/08(土) 21:17:13.95ID:24Q9Tmjg
>>474
やっぱQZってとんでもなくバカだな
>>439からの流れ読めよ。BOOLについて会話されてるぜ
488デフォルトの名無しさん
垢版 |
2020/02/08(土) 21:25:19.61ID:RKzyJDHj
正の型の値と負の型の値を比較する場合、ビット幅の大きいほうの型に変換されてから比較されるんですかね?
2020/02/08(土) 21:30:32.47ID:uvgcwZ2m
汎整数拡張でググれ
490デフォルトの名無しさん
垢版 |
2020/02/08(土) 21:35:32.85ID:RKzyJDHj
>>489
ググってみたんだけど。
https://kumikomiya.com/implicit-conversion/
これを見ると変換は起きないって事なのかな?
2020/02/08(土) 23:34:23.41ID:jnRyPLnj
>>472
いや。TRUE は、必ず if 式で真と判定されるので、if (b == TRUE) としなくても
if (b) で絶対十分であることは補償されている。
むしろ、if (b == TRUE) と書くのはバグの原因になるので駄目だと言われている。
2020/02/08(土) 23:51:17.72ID:jnRyPLnj
なんというか、TRUE は、処理系ごとに変化する値ではなく、C/C++ においては、標準的には必ず 1 に #define されている。
一応分かり易さのために TRUE と書いているだけで、TRUEが2になったりする事は考える必要はない。

ただし、逆に、高速化のために 1 ではなく、非0の値を返してたまたまの値、
例えば、12 とかを返してくる関数が有りえる。
その場合、うっかり間違って if ( b == TRUE ) などと書いてしまっていたら
大変なことになるので、意味的に TRUE を返す場合には、
if ( b ) または、if ( b != 0 ) と書く方が安全だと考えられている。
2020/02/08(土) 23:53:58.53ID:jnRyPLnj
非常に古い時代に、TRUE を -1 と定義していた処理系もあったかもしれないが、
現在の C/C++ では、1 に定義するのが基本とされている。
b == TRUE という判定の仕方は、C/C++ の言語仕様から考えれば推奨されない。
2020/02/09(日) 00:57:27.97ID:OoesT11A
>>492-493
言語仕様にある true を避けているのだから、
その環境においては標準と異なる事情があるのだと察するべきじゃないの。
まあそういうことがあったらもっと別の名前を付けるべきだとは思うけど。

C/C++ はその性質上、様々なシステムの仲立ちをする機会があるし、
いろんな事情に左右される。
TRUE を 1 と定義する機会が多いのは確かだろうし、
そのときの習慣が確立されてもいるのもわかってるけど、
それが当たり前かっつーとそうとも言えんのじゃないかな。
2020/02/09(日) 01:17:16.75ID:J5M0tDgl
趣味人だとかいってるがハチミツ餃子はたまに良い事いうから困る
2020/02/09(日) 01:23:08.88ID:e66sowWB
>>494
TRUE が 1 以外に定義されていても、TRUE の値は、if 文では真と解釈されることだけは保障されているので、if (b) は問題ない。
逆に BOOL b の場合、b が非0であるが、TRUE のマクロ値とは異なった値になっている場合がないとは保障はされない。
なので、if ( b == TRUE ) だと、TRUE ではないが b に真とみなせる値が入っている場合にすり抜けてしまう恐れがあり、重大バグの原因となる。
2020/02/09(日) 01:23:18.79ID:bHnzUNQO
>>494
避けるもクソもそもそも昔なかったし
2020/02/09(日) 01:33:30.02ID:Jw8Rx7z0
あったぞ
MSが実装サボっただけで
2020/02/09(日) 01:58:53.21ID:bHnzUNQO
当時のc言語には仕様に無くない?
2020/02/09(日) 02:19:40.02ID:OoesT11A
>>495
ハチミツじゃなくてはちみつな。

>>496
それが真偽値だというのが思い込みで、
実際には様々な可能性が有り得るってことだよ。

普通はこうだからこうみたいな話じゃなくて、
少なくとも言語仕様に無いのはわかってるんだから、
その環境でどうなってるかくらい確認したれやという話。

>>497
私は >>493 からあくまで現代の話だと読み取ったのでそのつもりで返答してるけど、
C/C++ のコードは長期的に使われやすいので現代という範囲の認識に齟齬はあるかもしれん。
501デフォルトの名無しさん
垢版 |
2020/02/09(日) 02:27:09.56ID:cYNa4VVg
過去と未来の狭間にあるってことかな。
2020/02/09(日) 04:25:17.31ID:ids8kf+0
WindowsAPIはC++限定じゃなくCを主軸に捉えてるだろ
クラスとか一切無いしマクロだらけだし
そもそもboolが無かったってのはそういうことやろ
2020/02/09(日) 07:14:29.14ID:6++kPC7v
>>462
> MSDNの書き間違いかもしれないが、Win32 APIの一部にも「成功時はTRUEを返す」という
> 仕様の関数があるんだよな。
具体的にどれ?
2020/02/09(日) 07:15:18.90ID:6++kPC7v
>>502
Cと言うよりPascalだし
2020/02/09(日) 07:19:31.89ID:PT76WH2y
>>434
自己紹介乙
2020/02/09(日) 07:24:44.99ID:PT76WH2y
>>493
TRUEが-1というと昔のBASICにそういうのあったね
だがその時代すでにCも存在していた
2020/02/09(日) 08:43:40.61ID:J3Qn0niW
>>496
何回ループしてるんだよ。
真(truthy)であることが要求されているなら if (b) だし、TRUEであることが要求されるなら
if (b == TRUE) だ。それを取り違えることがバグだ。
2020/02/09(日) 08:54:48.96ID:aEgJYC9i
>>503
これとか、
https://docs.microsoft.com/en-us/windows/win32/api/dbghelp/nf-dbghelp-makesuredirectorypathexists
2020/02/09(日) 08:59:21.69ID:aEgJYC9i
まあ失敗時はFALSE、とも書いてあるから、こう書くのが正解!
bRet32 = MakeSureDirectoryPathExists("C:\\tmp");
if (bRet == TRUE) {
 // 成功すた
 ...
} else if (bRet == FALSE) {{
 // 失敗すた
 ...
} else {
 assert(0);
}
2020/02/09(日) 09:03:53.87ID:aEgJYC9i
あと>>461は、>>455の三択で選ぶならif (b == TRUE)だが
正しくは↓こう書くべき
bRet = GetMessage(...);
if (b == -1) {
 // エラー1が発生すた、
 ....
} else if (bRet == FALSE) {
 // エラー2が発生すた、
 ....
} else if (bRet = TRUE) {
 // 成功すた、
 ...
} else {
 assert(0);
}

つまり出題者>>455の知識と想像力の欠如が諸悪の根源
2020/02/09(日) 09:06:48.93ID:aEgJYC9i
訂正orz
 誤: bRet
 正: bRet32

>>509訂正、
 誤: {{
 正: {

>>510訂正
 誤: bRet = TRUE
 正: bRet32 == TRUE
2020/02/09(日) 09:28:45.27ID:PT76WH2y
C89にboolがないことに拒否反応を起こす頭の固い奴に迎合して作られたboolでないBOOL
2020/02/09(日) 09:35:18.39ID:aEgJYC9i
先にWindowsがシステムコールとしての素朴な要請からbool型の実装型を定義して、
その後コンパイラメーカーがbool型の実装を別の方式にし出すよりは
よっぽどマシやったろうが!

個人的にはBOOLは好きだがな
TRUE/FALSEを表すのに4バイトも使うところが
いかにもリッチなOSっぽく、使っていてリッチな気分になれる
2020/02/09(日) 09:41:35.54ID:6++kPC7v
>>508
ありがと
全部は見てないけどDbgHelp関連の奴はその書き方してるみたいね
https://docs.microsoft.com/en-us/windows/win32/debug/dbghelp-functions
2020/02/09(日) 09:47:29.30ID:Ej5ffr5G
>>510
> } else if (bRet == FALSE) {
>  // エラー2が発生すた、
>  ....
エラーじゃないぞ
人の知識とか想像力とか言う前に自分の知識を見直せよw
2020/02/09(日) 09:55:00.47ID:aEgJYC9i
といっても成功していないのだからエラー扱いで差し支えないなのでは…
2020/02/09(日) 10:28:32.96ID:Ej5ffr5G
>>516
なんでそんなに自信満々なんだよw
マジでドキュメント見てこい
https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getmessage
2020/02/09(日) 10:45:20.17ID:Jw8Rx7z0
>>510
GetMessageのマニュアルをちゃんと読めクソ雑魚
エラーの時は-1、WM_QUITの時はFALSE(0)を返すが、それ以外の時は「nonzeroを返す」としか言ってない
nonzeroというのはたくさんの値の集合であって、その判定をある特定の値と==で行うことはTRUEが1だろうと他の値だろうと完全な間違いだ
つまりお前のその糞プログラムは完全にバグっているし、お前がバカにしてる>>455らが言った通りの間違いをそのままやらかしてる
2020/02/09(日) 10:54:04.79ID:Jw8Rx7z0
クソ雑魚>>510はマニュアルを読まない可能性があるので、マニュアルの使用例貼っておきますね
GetMessageがFALSE(0)返したときの何がエラーだって?笑わせんなカス
TRUE以外ならassertで落としていいなんてどこに書いてある?勝手な妄想すんなゴミ

BOOL bRet;

while( (bRet = GetMessage( &msg, hWnd, 0, 0 )) != 0)
{
 if (bRet == -1)
 {
  // handle the error and possibly exit
 }
 else
 {
  TranslateMessage(&msg);
  DispatchMessage(&msg);
 }
}
2020/02/09(日) 11:39:41.09ID:aEgJYC9i
>>519
>TRUE以外ならassertで落としていいなんてどこに書いてある?
それはこちらが聞きたい;
何を見てそう思ったのか?
2020/02/09(日) 11:53:18.89ID:PT76WH2y
>>519
変数いらねーから
for(;;)
switch(GetMessage(&msg, hWnd, 0, 0))
{
default:
TranslateMessage(&msg);
DispatchMessage(&msg);
break;

case 0:
return int(msg.wParam);

case -1:
throw std::system_error(std::error_code(int(GetLastError()), std::system_category()), "GetMessage");
}
2020/02/09(日) 12:02:53.96ID:Cr/e9GtE
while(GetMessage( &msg, hWnd, 0, 0 ) >0)
{
  TranslateMessage(&msg);
  DispatchMessage(&msg);
}
2020/02/09(日) 12:05:04.77ID:aEgJYC9i
とオモタがわかった
GetMessage()は WM_QUIT以外を受け取ったとき非0を返す、としか書かれていないから
bRet32 == TRUEでは正しい判定にならないのねん

使ったのがスゲー昔なので忘れていたが、そのときは多分>>519式に書いたから安心してホスイ
2020/02/09(日) 12:06:02.94ID:aEgJYC9i
>>522
気持ちはワカル
2020/02/09(日) 15:07:49.90ID:Z95s67CZ
しょうもない事で攻撃的になるやつなんなの
いつも吹いてしまうw
2020/02/09(日) 15:13:04.53ID:G+Zw2pJ3
(笑)
2020/02/09(日) 15:27:19.45ID:OoesT11A
>>506
BASIC というか、古の言語にはビット演算と論理演算の区別がないものが結構あった。
全てのビットが立った状態 (-1) を真ということにしておけば
ビット演算用の AND, OR, NOT がそのまま論理演算のそれとして使える。

昔はこれが気の利いた方法だったんだろう。
528デフォルトの名無しさん
垢版 |
2020/02/09(日) 16:19:35.32ID:wTv3WydA
#define FALSE 0 ← 正しい
#define TRUE 1 ← 間違い くず! 0点!! 出入り禁止!!!
#define TRUE (!0) ← 正しい
if(b) ← 正しい
if(b != FALSE) ← 正しい
if(b == TRUE) ← 間違い くず! 0点!! 出入り禁止!!!
2020/02/09(日) 17:16:55.31ID:J3Qn0niW
>if(b != FALSE) ← 正しい

これこそ糞コード
2020/02/09(日) 17:20:45.96ID:GpaXptWq
意味的にboolなら
if (a)
if (!a)
で判断すべきだと思う
2020/02/09(日) 17:24:22.90ID:GpaXptWq
if (a == TRUE)
if (a == TRUE == TRUE)
if (a == TRUE == TRUE == TRUE)
2020/02/09(日) 17:32:39.19ID:DvSFPggO
とぅっとぅるぅ〜♪
2020/02/09(日) 17:40:32.11ID:J3Qn0niW
もともと>>438>>439を混同すんなという話なんだが、混同してる奴が次から次へと湧いて出てくるw
534デフォルトの名無しさん
垢版 |
2020/02/09(日) 17:46:22.21ID:cYNa4VVg
ちゃうねん。
2020/02/09(日) 17:46:32.42ID:ugWNThcV
>>528
#define TRUE (!0) ← 正しい

C/C++ では、!0 は、必ず1 になることが仕様化されているので、仕様に準拠している
処理系ではこれは必ず、
#define TRUE 1
と書くのと同じになるので、敢えて (!0) と書く意味は無い。
2020/02/09(日) 17:48:20.60ID:GpaXptWq
boolだろうがBOOLだろうがYESNOだろうが
意味がboolであればboolと同じ扱い
2020/02/09(日) 17:48:58.88ID:6++kPC7v
>>529
糞コードだが
> if(b == TRUE) ← 間違い くず! 0点!! 出入り禁止!!!
より1億倍マシ
2020/02/09(日) 17:50:49.32ID:GpaXptWq
>>528
1がイヤなら0もイヤだろう
#define FALSE (0!=0)
としないと
2020/02/09(日) 17:55:11.50ID:J3Qn0niW
>>537
マシとか言う以前にそもそも動作が違うんだが。
bがTRUEと一致するかどうか判断するのに他にどういう書き方をするというんだろう?
540デフォルトの名無しさん
垢版 |
2020/02/09(日) 17:59:01.69ID:cYNa4VVg
>>539
!(b != TRUE)。
2020/02/09(日) 18:02:21.32ID:GpaXptWq
普通はTRUEかFALSEしか入ってないんだよ

それ以外が入ってる可能性があるなら
普通TRUEがどうかの判断だけじゃダメじゃないか?
2020/02/09(日) 18:05:49.02ID:GpaXptWq
switch (b){
case FALSE:
...
case TRUE:
...
case ???
...
default
...
}

これで
2020/02/09(日) 18:07:19.16ID:ugWNThcV
>>539
それは難しくいえば数学の集合論の話になる。
{0} と {非0} の二つの集合が有り、
if の条件式では、前者が偽、後者が真と評価される。
TRUEはどんな処理系であれ、必ず後者の集合の要素(元)になっていることだけは
保障されている。
なので、if ( b != 0 ) や、if (b) は正しいが、
if (b == TRUE) は絶対駄目、ということになる。
2020/02/09(日) 18:09:46.56ID:GpaXptWq
>>543
BOOLなのに
1と2を区別したい事があるんだってさ
2020/02/09(日) 18:10:45.32ID:ugWNThcV
if ( b == TRUE ) は、この条件式自体の動作は問題ないが、
b が TRUE ではないが、真である何らかの値を持っていたときに破綻してしまう。
BOOL b と書いた場合、本人が書いたプログラムでは b は、必ず
TRUE か FALSE の二値に限って書くことになろうが、往々にして、
APIなどでは、「真」の意味で「非0」の値を返してくること関数が含まれて
しまっている。
だから、勘違いや混乱が起き易い。
そのため、if ( b == TRUE ) というのは、絶対にやめておいたほうが良い書き方
となる。
2020/02/09(日) 18:16:58.01ID:GpaXptWq
TRUE/FALSE以外を想定するなら
時と場合による

TRUE/FALSEしか想定しないなら
if (b) / if (!b)
と書くべき
2020/02/09(日) 18:19:53.44ID:TF4jiljH
昔VB6からWinAPI呼ぶときの注意点として本で読んだ気がする
それboolじゃないよね?とは思った
2020/02/09(日) 18:20:59.38ID:J3Qn0niW
>>545
じゃあ聞いてみよう。
bがTRUEと一致するかどうか判断する必要がある場合はどう書く?
2020/02/09(日) 18:29:21.05ID:J3Qn0niW
>>546
排中律が成り立たないからFALSEでないことはTRUEを意味しない。
成功した場合にTRUE、失敗した場合にFALSEを返すという関数がある場合、成功したかどうかは
FALSEでないことではなくTRUEと一致するかどうかで判断しなければならない。
550デフォルトの名無しさん
垢版 |
2020/02/09(日) 18:29:23.53ID:cYNa4VVg
>>548
!(b != TRUE)。
2020/02/09(日) 18:30:08.13ID:aEgJYC9i
>>548
架空のケースについてのお答えは差し控える
つか糞コードかどうかはともかく>>509の方はMSDNの記述に準拠したコードという意味では
非の打ち所が無い(何かあってもMSDNのせいにできる
2020/02/09(日) 18:30:08.50ID:6++kPC7v
>>539
> bがTRUEと一致するかどうか判断する
それ自体がまずい(ことが多い)と指摘されてることにそろそろ気づこうよ…
2020/02/09(日) 18:36:27.78ID:J3Qn0niW
>>552
>>514見ているのにいまだにそんなこと言っているのはなんでだろう
554デフォルトの名無しさん
垢版 |
2020/02/09(日) 18:42:52.19ID:cYNa4VVg
いやちゃうねん。
2020/02/09(日) 18:59:34.88ID:aEgJYC9i
intの取り得る値の集合に対し、TRUEの定義が-93でありかつそれ以外は偽と解釈をせよと仕様に書いてあったら
さすがに(b == TRUE)とか(b != TRUE)書くことを現実の選択肢として考慮せざるおえない
もちろんそんな仕様が糞だが、仕様なのだからしようが無い
数学の本質は自由性にある、
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況