[過去ログ] 【初心者歓迎】C/C++室 Ver.100【環境依存OK】 [無断転載禁止]©2ch.net (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
930
(1): デフォルトの名無しさん [sage] 2017/07/13(木) 07:12:43.09 ID:/oMuxl/G(2/2) AAS
>929
929(1): ◆QZaw55cn4c [sage] 2017/07/13(木) 06:27:44.49 ID:NDMOLt7F(1) AAS
>>927

>>880
int **pp = &p;
でpp[1] は書いちゃだめだろう?
その書いちゃダメを規定する6.5.6p8には「that is evaluated」という条件がある
evaluateはメモリアクセスの有無と関係無く基本的に全て行われるはずだが
6.5.3.2p3の例外既定により該当しないばかりか「&*」が省かれるとある
931: ◆QZaw55cn4c [sage] 2017/07/13(木) 08:39:26.58 ID:045lcfaT(1) AAS
>>930
シンタックスではなくセマンティクスというわけですか‥ありがとう
932
(2): デフォルトの名無しさん [] 2017/07/13(木) 18:16:27.80 ID:PDgj9Ebq(1/2) AAS
#include<stdio.h>
#include<string.h>
#define NUM 10
int main(void) {
int length;
char name[NUM * 2 + 1];
char family_name[NUM + 1];
char first_name[NUM + 1];
printf("姓を入力してください\n");
scanf("%s", family_name);
printf("名を入力してください\n");
scanf("%s", first_name);
strcat(name, family_name);
strcat(name, first_name);
length = strlen(name);
printf("名前:%s\n", name);
printf("長さ:%d\n", length);
return 0;
}
このプログラムで入力まではちゃんとできてるみたいなんですがstrcatのところでおかしくなって
結合結果がフフフフフフフってなります。どうしてでしょうか?
933: デフォルトの名無しさん [sage] 2017/07/13(木) 18:29:33.51 ID:lX8cJUTX(1/4) AAS
笑われてんじゃね?
934: デフォルトの名無しさん [sage] 2017/07/13(木) 18:30:25.16 ID:lX8cJUTX(2/4) AAS
マヂレスすると、nameが不定
935: デフォルトの名無しさん [sage] 2017/07/13(木) 18:34:34.28 ID:a0isPZOF(1/2) AAS
>>932
char name[NUM * 2 + 1] = {0};
936: デフォルトの名無しさん [] 2017/07/13(木) 18:37:48.37 ID:PDgj9Ebq(2/2) AAS
ありがとうございました
937
(1): デフォルトの名無しさん [sage] 2017/07/13(木) 19:34:29.65 ID:b1PvI/zl(1) AAS
どうでもいいけど、
char name[NUM * 2 + 1] = "";

普通こうじゃね?

char name[NUM * 2 + 1] = {'0'};

これでも良い

コンパイル結果はたぶん全部同じだけど
938: デフォルトの名無しさん [sage] 2017/07/13(木) 20:27:20.55 ID:bV5zFMan(1) AAS
>>932
俺のところで試してみたらフフフノフフフになった
939: デフォルトの名無しさん [sage] 2017/07/13(木) 20:43:44.17 ID:lX8cJUTX(3/4) AAS
Visual Studio のデバッグビルドだと、不定メモリをCCで埋める
だからこれに対応する'フ'が表示される
なぜ途中が'ノ'になるかはわからん

strcatではCCの後の0を探してその後に文字列をコピーするから、0の位置によっては例外が発生したり動作がおかしくなったりするかも
940
(1): デフォルトの名無しさん [sage] 2017/07/13(木) 21:06:57.04 ID:a0isPZOF(2/2) AAS
>>937
= {'\0'};のタイプミスだよね?
941: デフォルトの名無しさん [sage] 2017/07/13(木) 21:23:18.88 ID:lX8cJUTX(4/4) AAS
>>940
タイプミスじゃなくて文字化けした
スマホから見ると、? が◆の中に書かれた文字になってる
942
(1): デフォルトの名無しさん [sage] 2017/07/13(木) 23:03:34.21 ID:xdHlDIka(1) AAS
プログラム終了にexit 0とreturn 0がどう違いますか?
943: はちみつ餃子 ◆8X2XSCHEME [sage] 2017/07/13(木) 23:59:30.53 ID:anRp6w5D(1) AAS
>>942
違わない。
main 内の return は exit と同じ。
944: デフォルトの名無しさん [sage] 2017/07/14(金) 19:19:48.00 ID:TW7O0pB9(1/2) AAS
というタワゴトで他人を陥れるのであった
945
(1): 片山博文MZ ◆T6xkBnTXz7B0 [sage] 2017/07/14(金) 19:26:30.76 ID:RoIBY40S(1/8) AAS
exitは死のトラクターが働かない
946: 片山博文MZ ◆T6xkBnTXz7B0 [sage] 2017/07/14(金) 19:32:27.26 ID:RoIBY40S(2/8) AAS
異常終了以外でexitを使うヤツは素人
947
(3): デフォルトの名無しさん [sage] 2017/07/14(金) 20:20:31.05 ID:8ghhANnS(1) AAS
えっ
mainのreturnでint値返すのはexitをその返り値で呼ぶのと全く等価でしょ?
少なくとも現行のC,C++規格では等価と書いてあるけど現実の実装ではそうなってないってこと?
948: 片山博文MZ ◆T6xkBnTXz7B0 [sage] 2017/07/14(金) 20:52:35.05 ID:RoIBY40S(3/8) AAS
#include <iostream>
#include <cstdlib>
struct A {
~A() {
std::cout << "OK" << std::endl;
}
};
int main(void) {
A a;
std::exit(-1);
}
949: 片山博文MZ ◆T6xkBnTXz7B0 [sage] 2017/07/14(金) 20:55:56.83 ID:RoIBY40S(4/8) AAS
>>947
どこに書いてあったか? 苦情入れるぞ。
950: デフォルトの名無しさん [sage] 2017/07/14(金) 21:04:08.43 ID:TW7O0pB9(2/2) AAS
今日の>>945は健常者
後始末される例外ケースについて触れていたら完璧だった
951: デフォルトの名無しさん [sage] 2017/07/14(金) 21:06:50.82 ID:VdC9hBdZ(1) AAS
atexit で後始末回収機構走らないの?
952: 片山博文MZ ◆T6xkBnTXz7B0 [sage] 2017/07/14(金) 21:39:46.62 ID:RoIBY40S(5/8) AAS
>>947
どこに書いてあった?
953: 片山博文MZ ◆T6xkBnTXz7B0 [sage] 2017/07/14(金) 21:46:17.67 ID:RoIBY40S(6/8) AAS
atexitはマニュアルに書いてある通りだから、ここでいちいち説明する必要はない。
954: 片山博文MZ ◆T6xkBnTXz7B0 [sage] 2017/07/14(金) 21:53:53.48 ID:RoIBY40S(7/8) AAS
マニュアルこそが聖書。マニュアルを読まない奴等はノンプレイヤー。
1-
あと 48 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.026s