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
探検
C言語なら俺に聞け 140 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん 転載ダメ©2ch.net (ワッチョイ 6f8c-8ulf)
2017/05/11(木) 22:20:03.99ID:cn414UR902デフォルトの名無しさん (ドコグロ MMa7-Ec/g)
2017/05/12(金) 13:08:15.72ID://5I1UQ2M イラネ
3デフォルトの名無しさん (スププ Sd9f-ZVjJ)
2017/05/12(金) 14:58:26.42ID:IiKpnLAId C言語からVBAで作ったエクセルマクロって実行できないの?
4デフォルトの名無しさん (ワッチョイ cfa9-xHOS)
2017/05/12(金) 16:05:36.32ID:UWkhiPx90 C99からif,for,whileの後に続く括弧の中がブロックのなかという
認識になったらしいんですけど、for以外でどうやって
その中で変数を宣言できるというんですか?
だったらforだけブロックの中っていうことでいいんじゃないんですか?
認識になったらしいんですけど、for以外でどうやって
その中で変数を宣言できるというんですか?
だったらforだけブロックの中っていうことでいいんじゃないんですか?
5デフォルトの名無しさん (ワッチョイ c300-yCMP)
2017/05/12(金) 16:31:31.05ID:js7UY7om0 if ( char * p = malloc( N ) )
こういうのとか?
こういうのとか?
6デフォルトの名無しさん (ワッチョイ cfa9-xHOS)
2017/05/12(金) 18:03:15.98ID:UWkhiPx90 それな
7デフォルトの名無しさん (ワッチョイ 3f14-ZVjJ)
2017/05/12(金) 22:01:43.38ID:HEUwhpUy0 C言語でエクセルのVBAマクロの実行できないの?
8片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd9f-TJ40)
2017/05/12(金) 22:06:16.73ID:r6F8dCD7d9デフォルトの名無しさん (ワッチョイ 3f14-ZVjJ)
2017/05/12(金) 22:08:09.17ID:HEUwhpUy0 C++かぁ
10デフォルトの名無しさん (ワッチョイ ffdd-Ec/g)
2017/05/12(金) 22:44:50.71ID:y9SJMwIK0 >>7
VBA マクロのインタプリター書けば良くね?Cで。
VBA マクロのインタプリター書けば良くね?Cで。
11デフォルトの名無しさん (ワッチョイ 83c8-SU9n)
2017/05/12(金) 23:06:05.96ID:UkU1KlKv0 おいQZゴミコードをここで書くなよ
ウンコードに投稿しろよ
ウンコードに投稿しろよ
12デフォルトの名無しさん (ワッチョイ 83c8-SU9n)
2017/05/12(金) 23:07:33.76ID:UkU1KlKv0 おいQZ
おまえってやればやるほど洗練された糞さを放ったコードが出来上がるから
自覚しとけ
おまえってやればやるほど洗練された糞さを放ったコードが出来上がるから
自覚しとけ
13デフォルトの名無しさん (ワッチョイ 83c8-SU9n)
2017/05/12(金) 23:09:00.10ID:UkU1KlKv0 おいQZいろんなC系スレでクソコードばらまくのやめろよ
今時Cでクソなコード書いてるのはおまえしかいない
今時Cでクソなコード書いてるのはおまえしかいない
14デフォルトの名無しさん (ワッチョイ 3fd4-00IQ)
2017/05/13(土) 12:44:34.80ID:vKP2EClq0 printf("%s", string);
ではなくて
printf(string);
でエラーが出ないようにするにはどうしたらいいですか?
ではなくて
printf(string);
でエラーが出ないようにするにはどうしたらいいですか?
15デフォルトの名無しさん (ワッチョイ cfa9-Pho8)
2017/05/13(土) 13:06:30.63ID:7e4RDEpq0 #define printf(string) printf("%s", string)
とする
とする
16デフォルトの名無しさん (ワッチョイ 8392-287W)
2017/05/13(土) 13:47:03.32ID:7pndE6Ym0 stringがchar*なら、それでエラーは出ない
キミが間違っとる
キミが間違っとる
17デフォルトの名無しさん (ワッチョイ c300-yCMP)
2017/05/13(土) 14:03:34.24ID:u94khtn50 コンパイラーによってはセキュリティ警告でも出るんだろうな
18デフォルトの名無しさん (ワッチョイ 8392-+8ye)
2017/05/13(土) 14:12:40.14ID:m48zL+ZP0 >>16
print「f」なのにフォーマットしないってなんか気持ち悪いな
print「f」なのにフォーマットしないってなんか気持ち悪いな
19デフォルトの名無しさん (ワッチョイ 7f3c-FKuM)
2017/05/13(土) 14:13:58.16ID:RjzTmCQE0 エラーがコンパイル時なのか実行時なのか
20デフォルトの名無しさん (ワッチョイ 8392-+8ye)
2017/05/13(土) 14:20:39.18ID:m48zL+ZP0 gcc使っているならコンパイル時のオプションに-wでコンパイルできたわ
21デフォルトの名無しさん (ドコグロ MM5f-Ec/g)
2017/05/13(土) 14:51:14.61ID:7U8nUyJbM22デフォルトの名無しさん (ワッチョイ 7fb6-9BLN)
2017/05/13(土) 14:58:27.01ID:Swj/Rgps0 >>21
馬鹿
馬鹿
23デフォルトの名無しさん (ワッチョイ c33c-SU9n)
2017/05/13(土) 15:42:18.61ID:zKUmpFvI0 string の中身に %s とか %d とかはいってると あわわわ
24デフォルトの名無しさん (ワッチョイ cf1f-PerL)
2017/05/13(土) 15:42:59.20ID:VT1sIlGJ0 ヌルポン渡すと落ちるぞ
25デフォルトの名無しさん (アウアウカー Sa67-wCA7)
2017/05/13(土) 15:55:06.50ID:1Sz8mIFNa そもそも出ないだろw
26デフォルトの名無しさん (ワッチョイ b3a3-lo9r)
2017/05/13(土) 22:21:45.16ID:IUtkDsju0 stringがワイド文字列なら警告くらい出るだろ
27デフォルトの名無しさん (ワッチョイ 8392-287W)
2017/05/13(土) 22:24:52.04ID:7pndE6Ym028デフォルトの名無しさん (ワッチョイ d3cd-+8ye)
2017/05/13(土) 23:37:01.87ID:Bvln+1PG0 format string attackって攻撃が実在するからな
C11で%nが廃止されたのも、それが原因だし
C11で%nが廃止されたのも、それが原因だし
29デフォルトの名無しさん (ワッチョイ ff4c-7CLb)
2017/05/14(日) 03:33:24.24ID:AUHwE8VO030デフォルトの名無しさん (ワッチョイ cf1f-O3YC)
2017/05/14(日) 03:39:55.42ID:RBSPlVIO0 やりたいことって、putsではダメなのかな?
31デフォルトの名無しさん (ワッチョイ cfa9-Pho8)
2017/05/14(日) 04:15:58.62ID:c1+aTdNX0 プッツ!
32デフォルトの名無しさん (ワッチョイ e33c-ei9w)
2017/05/14(日) 10:30:41.42ID:QnhMTTR+0 a+=1;
と
a++;
って同じ意味ですか?
と
a++;
って同じ意味ですか?
33デフォルトの名無しさん (ワッチョイ 7f92-xFWy)
2017/05/14(日) 10:51:06.70ID:44d8vf440 >>32
a+=1 と ++a の評価は同じ
a+=1 と a++ の評価は違う
評価後の値はどちらも同じ
#include <stdio.h>
int main(void)
{
int a;
a = 0;
printf("%d\n", a); // a=0
printf("%d\n", a += 1); // a=1 評価結果はインクリメント後の値
printf("%d\n\n", a); //a=1
a = 0;
printf("%d\n", a); // a=0
printf("%d\n", ++a); // a=1 評価結果はインクリメント後の値
printf("%d\n\n", a); // a=1
a = 0;
printf("%d\n", a); // a=0
printf("%d\n", a++); // a=0 評価結果はインクリメント前の値
printf("%d\n\n", a); // a=1
return 0;
}
a+=1 と ++a の評価は同じ
a+=1 と a++ の評価は違う
評価後の値はどちらも同じ
#include <stdio.h>
int main(void)
{
int a;
a = 0;
printf("%d\n", a); // a=0
printf("%d\n", a += 1); // a=1 評価結果はインクリメント後の値
printf("%d\n\n", a); //a=1
a = 0;
printf("%d\n", a); // a=0
printf("%d\n", ++a); // a=1 評価結果はインクリメント後の値
printf("%d\n\n", a); // a=1
a = 0;
printf("%d\n", a); // a=0
printf("%d\n", a++); // a=0 評価結果はインクリメント前の値
printf("%d\n\n", a); // a=1
return 0;
}
34デフォルトの名無しさん (ワッチョイ 8ff3-SU9n)
2017/05/15(月) 10:50:08.41ID:ITGYMTaF0 int a=1;
a = a+++a;
これ、たいていの環境で 3 になるみたいだけど
内部ではどっちに構文解析されてるの?
a = a+++a;
これ、たいていの環境で 3 になるみたいだけど
内部ではどっちに構文解析されてるの?
35デフォルトの名無しさん (ワッチョイ c328-Z6j5)
2017/05/15(月) 11:49:32.39ID:8jcxUI920 >>34
a=b++ + c;
a=b++ + c;
36デフォルトの名無しさん (ワッチョイ 8392-+8ye)
2017/05/15(月) 11:56:31.63ID:Z3hdp57V0 >>34
後置インクリメント演算子(a++)は+演算子や前置インクリメント演算子(++a)より優先順位高い
後置インクリメント演算子(a++)は+演算子や前置インクリメント演算子(++a)より優先順位高い
37デフォルトの名無しさん (ワッチョイ 7f92-xFWy)
2017/05/15(月) 12:12:51.85ID:Vosr5hkL0 >>34
VC++の場合
a = (a + a)++;
GCCの場合
a = ++(a + a);
int a = 10;
printf("%d\n", a); // a=10
printf("%d\n", a=a+++a); // a=20 (VC++の場合)、a=21 (GCCの場合)
printf("%d\n\n", a); // a=21
VC++の場合
a = (a + a)++;
GCCの場合
a = ++(a + a);
int a = 10;
printf("%d\n", a); // a=10
printf("%d\n", a=a+++a); // a=20 (VC++の場合)、a=21 (GCCの場合)
printf("%d\n\n", a); // a=21
38デフォルトの名無しさん (ワッチョイ 7f0e-z3es)
2017/05/15(月) 12:55:00.64ID:FMK+ZQcW0 右辺値のインクリメントが出鱈目過ぎる
39デフォルトの名無しさん (ワッチョイ d3cd-+8ye)
2017/05/15(月) 13:04:41.31ID:m4iBjxKl040デフォルトの名無しさん (ワッチョイ 8392-+8ye)
2017/05/15(月) 13:26:43.15ID:Z3hdp57V0 >>39
えっ? 関係ないの?
えっ? 関係ないの?
41デフォルトの名無しさん (ワッチョイ 7fcd-/tbB)
2017/05/15(月) 14:05:11.81ID:KBSLJwGw0 >>37
// GCCの場合
a=10;
printf("1: %d\n", a = a++ + a); // a=21
a=10;
printf("2: %d\n", a = ++a + a); // a=22
a=10;
printf("3: %d\n", a = a + a++); // a=21
a=10;
printf("4: %d\n", a = a + ++a); // a=22
1と2は予想通りだけど3と4は予想が外れた。
GCCは素直に前方から評価すると思っていたが、
インクリメント演算がある項を先に評価するようだ。
// GCCの場合
a=10;
printf("1: %d\n", a = a++ + a); // a=21
a=10;
printf("2: %d\n", a = ++a + a); // a=22
a=10;
printf("3: %d\n", a = a + a++); // a=21
a=10;
printf("4: %d\n", a = a + ++a); // a=22
1と2は予想通りだけど3と4は予想が外れた。
GCCは素直に前方から評価すると思っていたが、
インクリメント演算がある項を先に評価するようだ。
42デフォルトの名無しさん (ワッチョイ 8ff3-SU9n)
2017/05/15(月) 14:08:51.26ID:ITGYMTaF043デフォルトの名無しさん (ワッチョイ d3cd-+8ye)
2017/05/15(月) 14:28:56.88ID:m4iBjxKl044デフォルトの名無しさん (ワッチョイ 8392-287W)
2017/05/15(月) 14:50:03.73ID:k1YI7zCW0 知ったかぶりしないで
副作用完了点を検索してからレスしようね
副作用完了点を検索してからレスしようね
45デフォルトの名無しさん (ワッチョイ d3cd-+8ye)
2017/05/15(月) 15:08:26.82ID:m4iBjxKl0 さすがに、a=a+++a が未定義なことぐらいわかってるだろ
そのうえで、どう動作してるのだろうかって話じゃねーの?
そのうえで、どう動作してるのだろうかって話じゃねーの?
46デフォルトの名無しさん (ワッチョイ 13df-TInS)
2017/05/15(月) 15:17:45.01ID:ugjsGD9A0 どう字句解析されるのかって話だろ
47デフォルトの名無しさん (アウアウカー Sa67-W6g0)
2017/05/15(月) 15:41:11.64ID:+h60b5kha 初めから()で囲んで優先つけた方がいいね
48デフォルトの名無しさん (ワッチョイ 7f92-xFWy)
2017/05/15(月) 15:48:46.87ID:Vosr5hkL0 VC++での逆アセンブルコード (Visual Studio 2017 debugモード)
// a=a++
a = 10;
004037DE mov dword ptr [a],0Ah
a = a++;
004037E5 mov eax,dword ptr [a]
004037E8 mov dword ptr [a],eax
004037EB mov ecx,dword ptr [a]
004037EE add ecx,1
004037F1 mov dword ptr [a],ecx
// a=++a
a = 10;
004037F4 mov dword ptr [a],0Ah
a = ++a;
004037FB mov eax,dword ptr [a]
004037FE add eax,1
00403801 mov dword ptr [a],eax
00403804 mov ecx,dword ptr [a]
00403807 mov dword ptr [a],ecx
// a = a+++a
a = 10;
0040380A mov dword ptr [a],0Ah
a = a+++a;
00403811 mov eax,dword ptr [a] // aの値と
00403814 add eax,dword ptr [a] // aの値を加算して (a+a)
00403817 mov dword ptr [a],eax // 一時保存(評価)して
0040381A mov ecx,dword ptr [a] // 評価結果に対して
0040381D add ecx,1 // 1を加算して (a+a)++
00403820 mov dword ptr [a],ecx // 最終結果をaに代入
// a=a++
a = 10;
004037DE mov dword ptr [a],0Ah
a = a++;
004037E5 mov eax,dword ptr [a]
004037E8 mov dword ptr [a],eax
004037EB mov ecx,dword ptr [a]
004037EE add ecx,1
004037F1 mov dword ptr [a],ecx
// a=++a
a = 10;
004037F4 mov dword ptr [a],0Ah
a = ++a;
004037FB mov eax,dword ptr [a]
004037FE add eax,1
00403801 mov dword ptr [a],eax
00403804 mov ecx,dword ptr [a]
00403807 mov dword ptr [a],ecx
// a = a+++a
a = 10;
0040380A mov dword ptr [a],0Ah
a = a+++a;
00403811 mov eax,dword ptr [a] // aの値と
00403814 add eax,dword ptr [a] // aの値を加算して (a+a)
00403817 mov dword ptr [a],eax // 一時保存(評価)して
0040381A mov ecx,dword ptr [a] // 評価結果に対して
0040381D add ecx,1 // 1を加算して (a+a)++
00403820 mov dword ptr [a],ecx // 最終結果をaに代入
49デフォルトの名無しさん (ワッチョイ 7f92-xFWy)
2017/05/15(月) 16:01:51.35ID:Vosr5hkL0 GCCは逆コンパイラが使える環境を持っていないので誰か頼みます
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 浜崎あゆみ、上海公演中止を発表「急遽中止の要請を受け…まだ信じられず、言葉になりません」 [征夷大将軍★]
- 今後50年間、毎年100万人ずつ人口が減る…「少子化対策」の失敗で日本が迎える「死ぬまで搾取」というヤバい未来 ★3 [ぐれ★]
- 立憲・原口議員がキレキレ「日本にレアアース来なければ中国は精製できない」「“旧敵国条項”明らかなやりすぎ」 [少考さん★]
- 【プロ野球】巨人 オコエ瑠偉外野手が自由契約 [あずささん★]
- 「おこめ券知られていない」農水省が説明会実施へ 「税金でおこめ券配ると、発行2団体に利益集中するのでは?」記者の問いに鈴木農水大臣 [ぐれ★]
- 登山中の男性死亡、クマ被害か 顔や首に傷 新潟 [どどん★]
- 高市「永住許可「1万円→30万円」爆上げ検討。資格変更も6000円から10万に値上げ。外国人政策ガチ強化へ [931948549]
- 原口一博「高市総理は中国への武力行使なんて言っていない。ただの法解釈だ。」 [834922174]
- 【衝撃】去年の自民党総裁戦、高市は宣伝費に約8400万円もの巨額を使っていた ※この時勝利した石破は約40万円 [597533159]
- 【高市悲報】経団連会長、政府が話にならないので中国大使と直接会談🥺経済交流の重要性訴える [359965264]
- 【悲報】浜崎あゆみさんの上海コンサートが前日に急きょ中止 [452836546]
- 皆の夜ご飯教えてやー
