C言語なら俺に聞け 140 [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん 転載ダメ©2ch.net (ワッチョイ 6f8c-8ulf)
垢版 |
2017/05/11(木) 22:20:03.99ID:cn414UR90
C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
http://codepad.org/

C11
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf

C99
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf
http://kikakurui.com/x3/X3010-2003-01.html

C FAQ 日本語訳
http://www.kouno.jp/home/c_faq/

JPCERT C コーディングスタンダード
https://www.jpcert.or.jp/sc-rules/


http://echo.2ch.net/test/read.cgi/tech/1487757355/
http://www.geocities.jp/c_cpp_cs/about_c/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
2017/05/21(日) 22:02:18.84ID:lXB+sVuE0
いやいや sizeof はコンパイル時に確定する演算だから
strlen みたいにポインタの指し先追っかけてデリミタ見つかるまでのバイト数とか 実行時依存じゃない
2017/05/21(日) 22:08:35.89ID:8VZiX6Z0a
>>179
ん?
出来てんの?
よく見たら宣言だけで初期化(確保)はしてないのな。
うーん。。。
ちょっとおいらの方でも書いて検証してみるわ。
2017/05/21(日) 22:10:30.59ID:lXB+sVuE0
だから sizeof は型さえ類推できれば、変数の実態なくてもいいんだって
なんなら () 付けて 型をかけばいい
183デフォルトの名無しさん (ワッチョイ 9e0d-Yh7p)
垢版 |
2017/05/21(日) 22:10:36.85ID:EhbYbiNc0
176でも初期化はしてないが
184デフォルトの名無しさん (ワッチョイ 9e0d-Yh7p)
垢版 |
2017/05/21(日) 22:13:36.56ID:EhbYbiNc0
>>182
型をかけばいいって、こうか?
if (sizeof i != sizeof(char*)) puts("ahem!!");
2017/05/21(日) 22:15:17.46ID:lXB+sVuE0
>>184
ごめん、すべて ID:8VZiX6Z0a 君向け (>>178 他)
2017/05/21(日) 22:39:46.18ID:fA6hmJLUa
>>179
分かってきたかも。
そのコードだと

int *i;
ってポインタ宣言すると

iのままがポインタで、*iがポインタの指す中身だから。。。

配列の実体になるんだ。

もっとシンプルに初心者のやりがちな

int main(void)
{
int i[100];
booger(i[100]);
return 0;
}

void booger(int i[100])
{
printf("%u",sizeof a[100]);
}

こう言うコードだとポインタのサイズが返ってくる。
2017/05/21(日) 22:41:32.99ID:fA6hmJLUa
ちゅーか十何年ぶりのCだったわ。。。
2017/05/21(日) 22:44:28.27ID:fA6hmJLUa
sizeof a[100]はタイポだけど許してね。
配列の変数名にiとか普通使わんのよ。
インデックス変数に使うからさ。
a[i]
2017/05/22(月) 06:47:21.18ID:3isejMaU0
void f(void * v, int size, void * x){
*v=*x;
}
上のコードで x の指し示す値のサイズが size であるとき
どのようにvの指し示す場所にxが指し示す値を一度に代入できますか?
2017/05/22(月) 07:31:20.24ID:uEzgaoxk0
memcpy(*v, *x, size);
2017/05/22(月) 07:34:49.91ID:uEzgaoxk0
訂正
memcpy(v, x, size);
2017/05/22(月) 07:37:02.82ID:qnT1Y5yL0
>>189
学校の宿題か?
2017/05/22(月) 08:26:47.95ID:jL5+dSxZ0
for (i=0; i<size; i++) ((int8_t*)v)[i] = ((int8_t*)x)[i];
194デフォルトの名無しさん (ワッチョイ 9e0d-Yh7p)
垢版 |
2017/05/22(月) 09:21:02.66ID:uUtJqX7+0
while(size--) *(char*)v++ = *(char*)x++;
2017/05/22(月) 11:15:09.22ID:jL5+dSxZ0
>>194
文法エラー (v, x のインクリメント操作は void * で評価されてる)
2017/05/22(月) 11:57:30.90ID:WXjICEY9M
size の単位が何なのか分からんなぁ。
2017/05/22(月) 12:02:49.26ID:HD7uOEeF0
(`・ω・´) ?
2017/05/22(月) 12:44:29.59ID:+BU32a3i0
最近はCMakeを使うのが普通なの?
GNU Make覚える必要があるかな

話変わるけど、MakeFileってソース1つ追加するたびに、変更する必要がある?
199デフォルトの名無しさん (ワッチョイ 9e0d-Yh7p)
垢版 |
2017/05/22(月) 13:11:20.22ID:uUtJqX7+0
>>195
すまん、素でボケてたw

しかしこれ構文規則には違反してないぞ
意味論においてvoid*の増分が禁止されているって話で
2017/05/22(月) 13:14:30.22ID:jL5+dSxZ0
>>199
あー コンパイルエラーと言えばよかったかw
2017/05/22(月) 13:14:54.60ID:CEFnqLB20
Makefileを作らなくてもmake出来るケースがある事を最近は知らない奴が多い
202デフォルトの名無しさん (ワッチョイ 9e0d-Yh7p)
垢版 |
2017/05/22(月) 17:02:12.42ID:uUtJqX7+0
cc love.c じゃなく
make love でいい件か?
2017/05/22(月) 19:00:44.22ID:J9ejs7e9M
makeのデフォルトルールだね
.c.o はよく使う
204デフォルトの名無しさん (ブーイモ MMea-ysFl)
垢版 |
2017/05/22(月) 19:41:32.06ID:h9CxmUP8M
>>201
まじか、知らなかった
2017/05/22(月) 19:45:14.71ID:yWHDUG7V0
作って覚えるVisual C#のようなゴールを設定して色々学ぶC言語の書籍はありますか?
206デフォルトの名無しさん (ワッチョイ 9e0d-Yh7p)
垢版 |
2017/05/22(月) 20:02:28.46ID:uUtJqX7+0
便利にゃ違いないけど
ロクに指示も与えずよきに計らえってスタンスで
何が出来てくるのかに受動的でいることに
俺は我慢できないな

無関心な大将を有能な部下がフォローして事なきを得たってことだろ
207デフォルトの名無しさん (ワッチョイ 9e0d-Yh7p)
垢版 |
2017/05/22(月) 20:02:58.11ID:uUtJqX7+0
だからスタックサイズのデフォも知らない馬鹿が大量発生するわけだし
2017/05/22(月) 20:03:31.72ID:Zgh5eQVH0
>>195
(void *)c++ は1だけインクリメントされる,c99 では規格で決まっている
2017/05/22(月) 20:04:10.12ID:Zgh5eQVH0
>>199
>意味論においてvoid*の増分が禁止されているって話で
そんな決まりはない,void * のインクリメントは正確に1だ
2017/05/22(月) 20:15:17.89ID:5FlvGyv/0
*vがsize分確保されてないんじゃね?
普通こうだよな
void f(void ** v, int size, void * x)
2017/05/22(月) 20:16:31.52ID:2o5iWMtc0
>>208
しらなんだ C99 からなのかね
2017/05/22(月) 21:22:47.69ID:d/63nSXI0
voidがサイズ持ってるとか無理やり過ぎ
便利だけど
2017/05/22(月) 21:22:49.29ID:lKEcPOEA0
>>208,209
うそつき
2017/05/22(月) 21:31:07.71ID:oluY6epY0
1になるのはgcc拡張だろ
215デフォルトの名無しさん (ワッチョイ 9e0d-Yh7p)
垢版 |
2017/05/22(月) 21:42:16.48ID:uUtJqX7+0
そういうオチか
ばかたれぃっ!!
2017/05/22(月) 23:25:56.35ID:klirxPDR0
息をするように嘘をつかれた
2017/05/23(火) 06:44:54.44ID:a7cn3COJ0
>>214
C99 からガチで
2017/05/23(火) 09:00:04.50ID:BTD2Lf690
>>208-209>>217
C99規格には「(void *)c++ は1だけインクリメントされる」という規定はない。
C99規格書(ISO/IEC 9899)は英語なのでそれを元にしたJIS X3010で説明する。
X3010は章番号を変えてないのでISO/IEC 9899の該当文章は自分で確認してくれ。

ISO/IEC 9899:TC2
http://www.open-std.org/JTC1/SC22/WG14/www/docs/n1124.pdf
JIS X3010
http://kikakurui.com/x3/X3010-2003-01.html

> 6.2.5 型
> 型は,オブジェクト型(オブジェクトを完全に規定する型),関数型(関数を規定する型),
>及び不完全型(その大きさを確定するのに必要な情報が欠けたもの)に分類する。
> void型の値の集合は空とする。それは,完全にすることのできない不完全型とする。
> void へのポインタは,文字型へのポインタと
> 同じ表現及び同じ境界調整要求をもたなければならない。

voidは不完全型だがvoid*はオブジェクト型でchar*と相互に代入可能だ。

> 6.5.3.4 sizeof 演算子
> sizeof演算子は,関数型若しくは不完全型をもつ式,それらの型の名前を括弧で
> 囲んだもの,又はビットフィールドメンバを指し示す式に対して適用してはならない。
> 型char,unsigned char若しくはsigned char(又はそれらの修飾版)をもつ
> オペランドに適用した場合の結果は,1 とする。

不完全型であるvoidにはsizeofを適用できない。
char派生はサイズ1と明確に規定されているがvoidのサイズは規定がない。
だから(void *)c++が元の値のままでもC99規格違反ではない。
2017/05/23(火) 09:33:11.13ID:6xCmSTo3M
>>218
「void はサイズ1だけど、sizeof するなよ」ってことじゃね?

「適用してはならない」が何なのかわからんけど。
2017/05/23(火) 09:47:33.99ID:Mt8tSRb/M
>>219
サイズ1ってどこからわかるの?
2017/05/23(火) 11:13:27.58ID:ufwaINxg0
ウンコQz得意の炎上学習法か
とっとと死ねよ
2017/05/23(火) 11:24:40.32ID:ufwaINxg0
>>218
ポインタの算術演算なので参照するところが違う
6.5.6-2の定義で加算可能なポインタは「オブジェクトへのポインタ」であり、
void *はキミが引用した6.2.5によりこの条件を満たさない 従ってQzはうんこ 今すぐ死ね

6.5.6 Additive operators
2 For addition, either both operands shall have arithmetic type,
or one operand shall be a pointer to an object type and the other shall have integer type. (Incrementing is equivalent to adding 1.)
2017/05/23(火) 11:31:22.03ID:YiZYoA3+0
規格のどこかにあったはず
2017/05/23(火) 11:45:51.13ID:ENsR+rXL0
おいQZ都合悪くなったら自演で叩きかよ
おまえもうム板に向いてないから一人でコードオナニーしてろよ
2017/05/23(火) 12:35:42.70ID:F0rvxaiH0
この件、過去に私が書いたコードを元に議論されたんだよね、当時の書き込みが見つからない…

>>218
>>222
ありがとうございます。感謝です。うれしいです。

>>218
>void へのポインタは,文字型へのポインタと
>同じ表現及び同じ境界調整要求をもたなければならない。

というのだから

>>222
当然、(char *)++ と (void *)++ は同じだよね
2017/05/23(火) 12:37:05.33ID:F0rvxaiH0
>>255 = >>256
2017/05/23(火) 12:38:56.50ID:fCVURflQ0
配置アドレスのアライメント要求が等しいのと
アドレスの算術演算で同じ結果になるのは別じゃ?
2017/05/23(火) 12:50:27.27ID:ufwaINxg0
このバカは
https://gcc.gnu.org/onlinedocs/gcc-7.1.0/gcc/Pointer-Arith.html#Pointer-Arith
すら読まずに、C99 からガチでキリッ
とか言ってんのか
死ね死ね死ね今すぐ死ね
2017/05/23(火) 12:57:12.80ID:fCVURflQ0
ideone の C99 でも(同じwarninngで)文句言ってるな
https://ideone.com/fDNXlH
2017/05/23(火) 13:03:46.65ID:BTD2Lf690
>>225
「同じ表現及び同じ境界調整要求」と同じ演算ができるかは別の話だ。
const変数は非const変数と「同じ表現及び同じ境界調整要求」だが変更できない。

>>222のJIS X 3010:2003該当部分は下記の通りだ。
voidはオブジェクト型ではなく不完全型だからvoid*に加減演算するのは規格外だ。

> 6.5.6 加減演算子
> 制約 加算の場合,両オペランドが算術型をもつか,又は一方のオペランドがオブジェクト型への
> ポインタで,もう一方のオペランドの型が整数型でなければならない。(増分は 1 の加算に等しい)
2017/05/23(火) 15:16:25.17ID:Eouhg5rk0
gccでも-pedanticオプションを使えばgcc拡張を警告するぞ
-std=c99オプションに頼るな

gcc-8の警告文
warning: wrong type argument to increment [-Wpointer-arith]

clang-5の警告文
warning: arithmetic on a pointer to void is a GNU extension [-Wpointer-arith]
2017/05/23(火) 17:10:14.54ID:ENsR+rXL0
QZ怒りの暴走
233デフォルトの名無しさん (アウアウカー Sacb-W7a5)
垢版 |
2017/05/23(火) 17:50:06.75ID:YSxby3lha
>>225
char型へのポインタ型のオブジェクトとvoid型へのポインタ型のオブジェクトが同じ境界調整を持つという規格が
なぜchar型のオブジェクトとvoid型のオブジェクトが同じサイズという話になるの?
2017/05/23(火) 18:08:28.42ID:F0rvxaiH0
>>230
なるほど、感謝です。
この議論、以前にも(自分のコードを対象に)問題になって、そのときは
void *p;
に対して
p + 3
が意味をもつのか、というあたりだったのですが、当時の議論に誤りがあったのかもしれません。
なお手元のgcc5.3.0 では -ansi -Wall で警告を出してくれませんでした。

>>228
あなたにもとっても感謝してますよ
これからもどうかご教示ください :-)

>>233
えっ、そう読むのか…
235デフォルトの名無しさん (アウアウカー Sacb-W7a5)
垢版 |
2017/05/23(火) 18:17:27.01ID:YSxby3lha
>>234
それ以外にどう読むの?
「同じ表現」はポインタ型のオブジェクトの内部表現の話だよね
並列で書いてある「同じ境界調整」もポインタ型のオブジェクトの境界調整の話と捉えるのが自然じゃないの
236デフォルトの名無しさん (アウアウカー Sacb-W7a5)
垢版 |
2017/05/23(火) 18:22:45.88ID:YSxby3lha
>>234
あと、-Wpointer-arithって言われてるのに、なんでWallで確認してるの?
Wallを勘違いしてない?
2017/05/23(火) 18:32:25.29ID:ufwaINxg0
>>230
>(増分は 1 の加算に等しい)
++を増分演算って訳した上に「演算」を省略すると意味不明になるね
2017/05/23(火) 18:40:44.02ID:F0rvxaiH0
>>235
該当部分を読むと

JIS 6.2.5
>void へのポインタは,文字型へのポインタと同じ表現及び同じ境界調整要求をもたなければならない ( 39 ) 。
>同様に,適合する型へのポインタ同士の場合,修飾版であるか又は非修飾版であるか(const とかのことby QZ) にかかわらず,
>同じ表現及び同じ境界調整要求をもたなければならない。
>構造体型へのポインタは,すべて同じ表現及び 同じ境界調整要求をもたなければならない。
>共用体型へのポインタは,すべて同じ表現及び同じ境界調整 要求をもたなければならない。
>これ以外の型へのポインタは,同じ表現又は同じ境界調整要求をもつ必要はない。

これを読んで感じるのは、つまりポインタ自身の表現やアラインメントを、いろいろ細分化する実装を思いつかない
far とか near とかでもなさそうだ。
細分化するとすればむしろポインタが指す先に関することではないだろうか?

>>236
え?-Wall って全部だすんじゃなかったんですかね。たぶん勘違いしていると思う。
239デフォルトの名無しさん (ワッチョイ cac8-amUu)
垢版 |
2017/05/23(火) 18:40:46.39ID:wffizmnr0
汎用ポインタのインクリメントは、
エラーが出るか1進むかだろう。
240デフォルトの名無しさん (ワッチョイ 9e28-Yh7p)
垢版 |
2017/05/23(火) 18:41:11.96ID:7CxjD8/v0
>>235
境界調整が同じでもサイズの違うオブジェクトへのポインタはあるだろ
char *a, (*b)[2];

K&R C では char* でよかった用途に、
なぜ、わざわざ void* を持ち込んだのか考えてみれ
サイズが 1 なのが気持ち悪くて、
サイズが不明ということにするためだろうが

この期に及んで void* が指す先のサイズが 1 とか言い出す
どスカタンがもしいたら死刑でいい話だぞ
241デフォルトの名無しさん (アウアウカー Sacb-W7a5)
垢版 |
2017/05/23(火) 18:46:38.37ID:YSxby3lha
>>240
安価先間違ってない?
ポインタの指すオブジェクトのサイズが一緒なんて一言も書いてないんだけど
2017/05/23(火) 18:53:09.03ID:F0rvxaiH0
>>240
よくわかる、その意見
でも memcpy(), memmove() の引数が void * であることが、ちらりと頭に過ぎるんです
これらは C で実装できない、てことですかね?
2017/05/23(火) 18:56:05.69ID:F0rvxaiH0
ID:F0rvxaiH0 = QZaw55cn4c
2017/05/23(火) 18:57:52.22ID:07biNjOo0
>>242
何言ってんの?
245デフォルトの名無しさん (ワッチョイ 9e28-Yh7p)
垢版 |
2017/05/23(火) 19:00:42.38ID:7CxjD8/v0
>>241
IDで追ってみたら、おまえさんの疑いは晴れた
すまんかった
2017/05/23(火) 19:01:37.22ID:F0rvxaiH0
>>244
void *memmove(void *dst, const void *src, unsigned n);
void *memcpy(void *dst, const void *src, unsigned n);
にて char * ではなく void * になっている理由はなにか?
2017/05/23(火) 19:09:35.34ID:ufwaINxg0
>>240
いや第一目的は、全ての型へのポインタと互換(キャストなしで変換できる)なポインタが欲しかったのだ
2017/05/23(火) 19:17:52.52ID:07biNjOo0
>>246
汎用なのになんでstring.hかと思ったことはある
2017/05/23(火) 19:31:53.76ID:ZdN5y2SH0
>>238
Wallは全ての警告が有効になるわけではない
https://gcc.gnu.org/onlinedocs/gcc-7.1.0/gcc/Warning-Options.html#index-Wall

> これを読んで感じるのは、つまりポインタ自身の表現やアラインメントを、いろいろ細分化する実装を思いつかない
> far とか near とかでもなさそうだ。
> 細分化するとすればむしろポインタが指す先に関することではないだろうか?
思いつかないなら、同じにすれば良いだけでしょ
そこからなぜ「同じ表現」はポインタの話なのに、「同じ境界調整要求」はポインタの先のオブジェクトの話になるの?

>構造体型へのポインタは,すべて同じ表現及び 同じ境界調整要求をもたなければならない。
>共用体型へのポインタは,すべて同じ表現及び同じ境界調整 要求をもたなければならない。
構造体/共用体型のオブジェクトが等しい境界調整要求を持つほうが非現実的でしょ
250デフォルトの名無しさん (ワッチョイ 9e28-Yh7p)
垢版 |
2017/05/23(火) 22:10:38.61ID:7CxjD8/v0
>>247
K&R C では char* をキャストなしで変換できてたが?
int *a = malloc(4);
251デフォルトの名無しさん (ワッチョイ 9e28-Yh7p)
垢版 |
2017/05/23(火) 22:57:03.61ID:7CxjD8/v0
>>246
バス幅が8bitでないハードでもったいないことしないためだろ
2017/05/23(火) 23:35:41.22ID:ZdN5y2SH0
>>238の通りQZは「構造体型のオブジェクトが全て同じ境界調整要求をもつ」と主張してるからな

この世に存在する大多数のコンパイラが規格に準拠していないという新説を主張しているぐらいだら
QZの脳内には、余人には考えつかない理屈があるんだろ
2017/05/24(水) 03:30:23.68ID:lEIYBmmJ0
QZはサイコ自演厨
くりかえすQZはサイコ自演厨
2017/05/24(水) 13:17:30.92ID:spHSYyT3M
>>250
なんかトートロジーみたいになってきたけど、K&Rの何でもポインタとして使われてたchar *は
ANSI以降はvoid *になったってことでしょ
255デフォルトの名無しさん (エーイモ SE8a-9r6K)
垢版 |
2017/05/24(水) 15:28:53.02ID:QjzRyjLLE
すいませんこのスレにワッチョイを導入した経緯ってなんですか?
256デフォルトの名無しさん (ワッチョイ 9e7c-Yh7p)
垢版 |
2017/05/24(水) 18:24:04.77ID:yvqQkV490
>>254
言い忘れ
今のCだって void* を void* 以外のポインタに変換できるが
あくまで推奨としてキャストする慣習があるだけで、
キャストが義務化されたのは C++

なので >>247 はかなり斜め上
あることを言い忘れているのだろうと好意的に解釈しても
互換とは何かについて考察が甘いと言わざるを得ない
2017/05/24(水) 18:28:35.29ID:UdPLjxGk0
cuda Cコンパイラーは
void*型からの代入にキャストが無いとエラーになる
多分MSのcl使ってるからそうなる
258デフォルトの名無しさん (ワッチョイ 9e7c-Yh7p)
垢版 |
2017/05/24(水) 18:36:39.06ID:yvqQkV490
>>257
そりゃ、管の方言だろ
cl, gcc, clang-cl どれもok
259デフォルトの名無しさん (ササクッテロロ Sp03-4D2f)
垢版 |
2017/05/24(水) 19:26:19.45ID:E7SQQ2iip
PStructA pstA[10];
に対して
&pstA[1] と pstA+1 は同じ一番目のポインタを返すという認識で合ってるでしょうか?
ポインタ演算と配列の違いが腑に落ちてないです
260デフォルトの名無しさん (ワッチョイ 6b00-Gjiu)
垢版 |
2017/05/24(水) 19:45:56.66ID:L7sKwR/z0
アドレス取得が後か先かの違いじゃない?
あんまり深く考えるとハゲるよ
2017/05/24(水) 19:50:38.77ID:/WrwABBj0
>>250
逆ができたか? できなかったと記憶してるが
2017/05/24(水) 20:44:36.72ID:tHoyeV8z0
NVIDIAのOpenCLコンパイラはvoid*を演算するコードをコンパイルしようとすると落ちる。
263デフォルトの名無しさん (ワッチョイ 0fbc-OpMt)
垢版 |
2017/05/25(木) 10:12:33.17ID:NxjYanVn0
>>261
できる/できないを、何を基準に言っている?
K&R 仕様の cc は死ぬほど寡黙なコンパイラで
だからこそ lint が別で用意されていたんだぜ
2017/05/25(木) 10:14:55.51ID:PLr2HWak0
for(int i=0;i<a+3;++i)
でaがループの中で使われなくても毎回計算されなおしますか?
2017/05/25(木) 10:50:22.52ID:jD8c7u6va
され直す。
2017/05/25(木) 11:11:35.32ID:1r4kIkVY0
>>264
volatileなら必ずされなおす
volatileじゃなければされなおされない可能性がきわめて高い
2017/05/25(木) 11:25:49.00ID:jD8c7u6va
そうか、最適化で定数になってる可能性が高いな。
2017/05/25(木) 12:50:12.06ID:0WgUeo5I0
>>263
ああ、思い出して来た
K&R(コンパイラ)では代入でポインタの型検査を行わなかった
関数呼び出し関数プロトタイプがないのでできなかった
すなわち全てポインタ型は互換だった

ここにポインタの型検査を持ち込むんだからK&Rでの「互換」はANSI Cか必要とした「互換」ではなく当然に役にたたない
従って、>>250は的はずれな指摘
269デフォルトの名無しさん (ワッチョイ 0fbc-OpMt)
垢版 |
2017/05/25(木) 14:30:16.20ID:NxjYanVn0
落ち着けよ
代入と関数原型は関係ないし
格助詞がふじこってるぞ
2017/05/25(木) 15:03:16.39ID:0WgUeo5I0
わざとそのように誤読したがるのはわかるが
> 関数呼び出し時の検査は関数プロトタイプがないのでできなかった
だな、編集ミスだ
271デフォルトの名無しさん (ワッチョイ 0fbc-OpMt)
垢版 |
2017/05/25(木) 15:59:46.97ID:NxjYanVn0
いや、だから代入と関数原型は関係ねえってば
代入が関数なのはC++だぞ
2017/05/25(木) 19:12:03.32ID:0WgUeo5I0
代入と関数呼び出しで型検査が必要になった
関係大あり
273デフォルトの名無しさん (ワッチョイ 0fbc-OpMt)
垢版 |
2017/05/25(木) 21:47:16.88ID:NxjYanVn0
代入には型検査がもともとあった
double a = 1.5;
int b;
b = a;
b には (int)a の値が正しく代入され
決して a の bit63-32 が切り裂きコピーされることはない
2017/05/25(木) 23:12:03.91ID:0WgUeo5I0
>>273
ポインタの型の検査の話だが
お前の短期記憶には障害が発生してるぞ
2017/05/26(金) 01:40:06.53ID:SIwotEYO0
またQZが自演を始めたよ
2017/05/26(金) 05:57:05.69ID:gxtuHd510
-Wshift-op-parentheses
これを守ろうとすると括弧だらけでコードが糞になるから切ることにするよ
2017/05/26(金) 08:18:33.58ID:IXNjZ2pR0
>>276
ifの条件節に代入を直接書けないのもうざいな
278デフォルトの名無しさん (ワッチョイ 0f29-OpMt)
垢版 |
2017/05/26(金) 09:57:19.90ID:qaraDccl0
>>274
char *a = "QZ";
int *b;
b = a;
で、これの何が関数呼び出しと関係があるんだ?
俺のページフォールトはいいから
おまえのラッチアップを何とかしようや
2017/05/26(金) 10:14:22.69ID:IXNjZ2pR0
>>278
ポインタの型検査の話だってなんども言ってんだろ
ポインタの型検査は代入と関数呼び出しで行われる

わかったかバーカ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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