1 名前:デフォルトの名無しさん [2007/02/01(木) 23:08:46 ] このスレは標準Cのみの限定スレです。 まず問題を冷静に吟味してCの話か否かをはっきりさせてから質問しましょう。 質問する前には最低限検索を。 エラー(警告含む)が起きたのならばエラーメッセージを書きましょう。 C FAQ 日本語訳 www.kouno.jp/home/c_faq/ Cプログラマ必読 ・プログラミング言語C(通称 K&R) www.amazon.co.jp/exec/obidos/ASIN/4320026926/250-7563469-9920244 他の過去ログはここに nssearch.hp.infoseek.co.jp/clang/ 前スレ 【ISO/ANSI/JIS】 C言語なら俺に聞け! Part 130 pc10.2ch.net/test/read.cgi/tech/1159613789/ GUIなどの標準Cではできない事の質問,ソース丸投げ、宿題、書籍 は 専門の別スレッド↓があるのでそこへさようなら。 【初心者歓迎】C/C++室 Ver.34【環境依存OK】 pc10.2ch.net/test/read.cgi/tech/1169039760/ C/C++の宿題を片付けます 82代目 pc10.2ch.net/test/read.cgi/tech/1169575464/
892 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 01:28:44 ] !
893 名前:デフォルトの名無しさん [2007/09/03(月) 18:47:21 ] bool a,b,c,d,e,f; とか int a,b,c,d,e,f; みたいに並べて書いた変数を一気に同じ値で初期化する書き方ってありますか? あったら教えてください。
894 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 18:55:12 ] a = b = c = d = e = f = 0;
895 名前:デフォルトの名無しさん [2007/09/03(月) 18:57:51 ] >>894 宣言と合わせて一行でかけませんか。
896 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 18:58:05 ] >>893 static int a,b,c,d,e,f; これで全部0で初期化される。 struct foo { int a,b,c,d,e,f; } foo = {0}; これでも全部0で初期化されるな。 まぁ、横着するなってことだ。
897 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 18:59:10 ] int a,b,c,d,e,f;a = b = c = d = e = f = 0;
898 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 19:25:37 ] >>897 ワロタ
899 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 19:29:01 ] それほど面白くはない
900 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 19:59:10 ] >>898 そんなので笑えるなんて君の人生楽しそうでうらやましいわ
901 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 20:07:29 ] >>893 同じ値で初期化するような変数なら同じような扱いをするんだろう 配列で宣言しろ
902 名前:デフォルトの名無しさん mailto:sage [2007/09/06(木) 16:40:24 ] 過疎ってますね ビットシフトでも入れてみますか?
903 名前:デフォルトの名無しさん mailto:sage [2007/09/06(木) 16:52:28 ] 聞くことがないならそれでよし わざわざ増やさんでいいw
904 名前:デフォルトの名無しさん mailto:sage [2007/09/06(木) 17:00:56 ] ビットシフト入れたかったのに・・・
905 名前:デフォルトの名無しさん mailto:sage [2007/09/06(木) 17:24:08 ] じゃビットシフト絡みで MMXの様に、4Byteの整数型を1Byte単位で飽和演算する方法を 昔どこかで見た気がするんだけど、どうやるんだっけ 0xFEFEFEFE に 各バイトに3を加算 ↓ 0xFFFFFFFF 画像処理に使おうと思ったけど思い出せない
906 名前:デフォルトの名無しさん mailto:sage [2007/09/06(木) 21:51:57 ] MMX対応のプロセッサを使う。
907 名前:905 mailto:sage [2007/09/06(木) 21:56:42 ] あった www.emit.jp/prog/prog_b.html しかし原理がよくわかんね
908 名前:デフォルトの名無しさん mailto:sage [2007/09/06(木) 21:58:04 ] if文を任意の位置でぬけるbreakとかcontinueみたいな 命令ってないですか?
909 名前:デフォルトの名無しさん mailto:sage [2007/09/06(木) 22:00:49 ] >>908 こんなイメージ? if (...) { ...; if (...) ifBreak; ...; } これくらいしか手がない気が。 if (...) { ...; if (...) goto endIf; ...; } endIf:
910 名前:デフォルトの名無しさん mailto:sage [2007/09/06(木) 22:01:58 ] goto
911 名前:デフォルトの名無しさん mailto:sage [2007/09/06(木) 22:15:29 ] >>909-910 サンクス
912 名前:デフォルトの名無しさん mailto:sage [2007/09/06(木) 22:38:47 ] do { if(...) { } else if(...) { .... break; } } while(0) とか
913 名前:デフォルトの名無しさん mailto:sage [2007/09/06(木) 23:43:12 ] 俺がよく使うのは if(...){ do{ ... if(...) break; ... }while(0); }
914 名前:デフォルトの名無しさん mailto:sage [2007/09/07(金) 00:12:33 ] 何その隠れgoto
915 名前:デフォルトの名無しさん mailto:sage [2007/09/07(金) 00:51:35 ] んな隠れgoto使うくらいなら、素直にgotoで書いた方が未だ見やすい希ガス。 そもそも、ロジックを整理すべきじゃないかとは思うが。
916 名前:デフォルトの名無しさん mailto:sage [2007/09/07(金) 00:54:57 ] if (...){ ... if(!...){ ... } } でいいんじゃないの?
917 名前:デフォルトの名無しさん mailto:sage [2007/09/07(金) 01:11:34 ] int i; scanf("%d",&i); while( i<1 || i>9999 ) { printf("もう一度入力してください"); scanf("%d",&i); } iに数字じゃなく、aaaaなどの文字列を入れると”もう一度入力〜”がえんえんループ表示されてしまいます。 これを防ぐにはどうしたらいいのでしょうか?
918 名前:デフォルトの名無しさん mailto:sage [2007/09/07(金) 01:14:43 ] >>917 ja.wikipedia.org/wiki/Scanf#.E7.95.B0.E5.B8.B8.E3.81.AA.E5.85.A5.E5.8A.9B.E3.81.8C.E8.A1.8C.E3.82.8F.E3.82.8C.E3.81.9F.E6.99.82.E3.81.AE.E5.87.A6.E7.90.86
919 名前:917 [2007/09/07(金) 01:23:41 ] >>918 ありがとうございます!
920 名前:デフォルトの名無しさん mailto:sage [2007/09/07(金) 01:26:09 ] >>918 その方法もどうかと思うな。 scanf()は行単位の処理じゃないのに、バッファクリアだけ行単位になってしまう。
921 名前:デフォルトの名無しさん mailto:sage [2007/09/07(金) 01:34:26 ] それではどうすればいいかってのは、このスレでガイシュツです。
922 名前:デフォルトの名無しさん [2007/09/07(金) 10:37:17 ] typedef struct _st { char ** ppsz; } st; void freeif(st* pst) { for(int i = 0; i < 3; i++) { for(int j = 0; j < 2; j++) { if(*pst->ppsz != NULL) { free((void*)pst[i].ppsz[j]); } } } for(int i = 0; i < 3; i++) { if(pst->ppsz != NULL) { free((void*)pst[i].ppsz); } } if(pst != NULL) { free(pst); } return; }
923 名前:デフォルトの名無しさん [2007/09/07(金) 10:38:36 ] int main(void) { st* pst; // make struct object pst = (st*)malloc(3); if(pst == NULL) { printf("st is null\n"); } else { for(int i = 0; i < 3; i++) { // make struct member pst[i].ppsz = (char**)malloc(2); for(int j = 0; j < 2; j++) { // make member area pst[i].ppsz[j] = (char*)malloc(10); } } // free memory freeif(pst); } return 0; }
924 名前:デフォルトの名無しさん [2007/09/07(金) 10:40:37 ] メモリの解放が上手くいきません。よろしくお願いします。 (正誤) if(pst->ppsz != NULL) { ← × if(pst[i].ppsz != NULL) { ← ○
925 名前:デフォルトの名無しさん mailto:sage [2007/09/07(金) 11:03:01 ] >>923 typedef struct _st { char ** ppsz; } st; static const char STRINGS[3][2][11] = { { "idx1:data1", "idx1:data2", }, { "idx2:data1", "idx2:data2", }, { "idx3:data1", "idx3:data2", }, }; void freeif(st* pst) { for(int i = 0; i < 3; i++) { for(int j = 0; j < 2; j++) { if(pst[i].ppsz[j] != NULL) { printf("pst[%d].ppsz[%d]:FREE\n", i, j); free((void*)pst[i].ppsz[j]); } } } for(int i = 0; i < 3; i++) { if(pst[i].ppsz != NULL) { printf("pst[%d].ppsz:FREE\n", i); free((void*)pst[i].ppsz); } } if(pst != NULL) { printf("pst:FREE\n"); free(pst); } return; }
926 名前:デフォルトの名無しさん mailto:sage [2007/09/07(金) 11:03:55 ] int main(void) { st* pst; // make struct object pst = (st*)malloc(3 * sizeof(st)); if(pst == NULL) { printf("st is null\n"); } else { for(int i = 0; i < 3; i++) { // make struct member pst[i].ppsz = (char**)malloc(2 * sizeof(char*)); for(int j = 0; j < 2; j++) { // make member area pst[i].ppsz[j] = (char*)malloc(11 * sizeof(char)); lstrcpy(pst[i].ppsz[j], STRINGS[i][j]); } } // debug printf("---------------------\n"); for(int i = 0; i < 3; i++) { for(int j = 0; j < 2; j++) { printf("pst[%d].ppsz[%d] >> %s\n", i, j, pst[i].ppsz[j]); } } printf("---------------------\n"); // free memory freeif(pst); } _getch(); return 0; }
927 名前:デフォルトの名無しさん mailto:sage [2007/09/07(金) 11:31:28 ] >>922-924 固定サイズなら無理にmalloc()/free()を使う必要はないと思うぞ。 typedef struct _st { char ppsz[2][10]; } st; でいいやん。
928 名前:デフォルトの名無しさん mailto:sage [2007/09/07(金) 11:36:05 ] メモリ動的確保/解放の練習とかじゃない?>>927
929 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 22:08:23 ] C89 の規格票ってどこかで見れない?
930 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 22:38:18 ] 過去ログにURLが転がってたような。 印刷できないPDFでよければJISCのサイトで閲覧できる
931 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 23:14:17 ] JISCって過去の規格票まで見れたっけ? 現在有効のX3010:2003はC99相当だけど。
932 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 23:19:57 ] 最新版以外はなかったことになるから。 ふつーはそれでも問題ないんだよ。非互換な改訂しなければ。 JIS漢字とかJIS漢字とかJIS漢字とか、あとJIS漢字とか
933 名前:デフォルトの名無しさん mailto:sage [2007/09/12(水) 00:31:37 ] そうなんだよな。それにJIS漢字も追加で。
934 名前:デフォルトの名無しさん mailto:sage [2007/09/12(水) 00:53:09 ] おいおい、JIS漢字を忘れちゃいないか?
935 名前:デフォルトの名無しさん mailto:sage [2007/09/12(水) 01:01:56 ] 規格票
936 名前:デフォルトの名無しさん mailto:sage [2007/09/12(水) 01:15:46 ] 無粋なヤツだな
937 名前:デフォルトの名無しさん mailto:sage [2007/09/12(水) 02:38:12 ] 無粋
938 名前:デフォルトの名無しさん [2007/09/12(水) 03:48:23 ] 今日学校でプロトタイプ宣言に関する問題を習ったんですが 問題:再帰関数を使って、Xのn乗を求めるプログラムを作成しなさい プロトタイプ宣言:int Power(int x,int n); 実行画面 文字列入力==>2 文字列入力==>0 値:1 文字列入力==>2 文字列入力==>3 値:8 文字列入力==>6 文字列入力==>4 値:1296 この問題だけどうしても判らなくて困っています^^; 何方かわかる方がいましたら教えてください
939 名前:デフォルトの名無しさん mailto:sage [2007/09/12(水) 04:00:01 ] >>938 int Power(int x,int n) { int i; int sum = 1; if(n == 0) return 1; else{ for(i = n; i > 0; i--) sum *= x; } return sum; }
940 名前:デフォルトの名無しさん mailto:sage [2007/09/12(水) 04:04:51 ] 再帰じゃないじゃん
941 名前:939 mailto:sage [2007/09/12(水) 04:06:40 ] あ、再帰だったんだ、出直してくる。
942 名前:939 mailto:sage [2007/09/12(水) 04:16:22 ] 再帰版 int Power(int x,int n) { if(n == 0) return 1; else return x*Power(x,n-1); }
943 名前:デフォルトの名無しさん mailto:sage [2007/09/12(水) 04:21:11 ] int Power(int x, int n) { if(x == 0 && n == 0) exit(1); if(n < 0) return 0; if(n == 0) return 1; return Power(x, n - 1) * x; }
944 名前:デフォルトの名無しさん mailto:sage [2007/09/12(水) 06:51:52 ] static int power(int x, int n, int v) { if (n < 0) return 0; if (n == 0) return v; return power(x, n - 1, x * v); } int Power(int x, int n) {return power(x, n, 1);} これで末尾再帰で最適化が利いてループになるはず。
945 名前:デフォルトの名無しさん mailto:sage [2007/09/13(木) 09:13:16 ] 特定の範囲の整数(例えば1〜10000)だけを入力させたいのですが、 fgets()使用時に桁溢れを完全に抑止することは可能ですか? char *buf[10]; unsigned int value; while(1) { fgets(buf, 10, stdin); 〜isdigit()とかで数値のみかを判定して、atoi()でvalueに格納してbreak〜 } fprintf(stdout, "%u\n", value); こんな感じで書いてるんですが、わざと入力を10桁以上にしたときに入力バッファに残ってしまってうまくいきません。 何かイイ方法あるでしょうか?(fflush(stdin)は無しで)
946 名前:945 mailto:sage [2007/09/13(木) 09:14:22 ] >>945 × char *buf[10] ○ char buf[10] orz
947 名前:デフォルトの名無しさん mailto:sage [2007/09/13(木) 09:19:36 ] >>945 fgets の後で fscanf(stdin,"%*[0-9]");
948 名前:デフォルトの名無しさん mailto:sage [2007/09/13(木) 11:18:05 ] >>947 通常の入力をした場合(桁数が少ない場合)に入力待ちにならない?
949 名前:デフォルトの名無しさん mailto:sage [2007/09/13(木) 11:22:42 ] fflush(stdin)と置換可能な関数を自作するのは厳しい とはいえ、fflush(stdin)は未定義 面倒くさいけど、fgetsで読み込んだbufに'\n'が有るかチェックして、 '\n'が無いなら'\n'が出てくるまで読み捨てることになる #include <stdio.h> #include <string.h> int main(void) { char buf[10]; char *p; int c; while (fgets(buf, sizeof buf, stdin) != NULL) { if ((p = strchr(buf, '\n')) != NULL) { *p = '\0'; } else { while ((c = fgetc(stdin)) != '\n' && c != EOF) {} } puts(buf); } return 0; }
950 名前:デフォルトの名無しさん mailto:sage [2007/09/13(木) 12:33:40 ] もっといい方法あるのかもしれないけど、こんなんでどうかな int get_unsigned(unsigned *v) { char buf[16]; char *p; int c; if (fgets(buf, sizeof buf, stdin) == NULL) return EOF; if (strchr(buf, '\n') == NULL) while ((c = fgetc(stdin)) != '\n' && c != EOF) {} *v = strtoul(buf, &p, 10); return *p; } int main(void) { unsigned val; int end; while (printf(">>"), (end = get_unsigned(&val)) != EOF) { if (end == '\0' || isdigit(end)) printf("W:入力が切り捨てられました.\n"); else if (end != '\n') printf("W:不正文字がありました. '%c'\n", end); if (val < 1 || 10000 < val) printf("W:入力範囲外です.\n"); printf("<<%u\n", val); } return 0; }
951 名前:945 mailto:sage [2007/09/13(木) 13:55:57 ] >>947-950 ありがとうございます。おかげさまで解決しました。
952 名前:デフォルトの名無しさん mailto:sage [2007/09/13(木) 14:16:48 ] scanf("%*[^\n]%*c");なんてできなかったっけ?
953 名前:デフォルトの名無しさん mailto:sage [2007/09/13(木) 14:20:57 ] >>952 それだと、次の文字が\nだと[^\n]にマッチしないので、その時点でひっかかり 読み捨てることが出来ない。 scanf("%*[^\n]"); scanf("%*c"); ならおk
954 名前:デフォルトの名無しさん [2007/09/15(土) 02:24:20 ] うーん勉強になるなあ。ここに書き込みしている人達て通算何年くらい勉強してきたんですか。 俺には凄過ぎっすよ。
955 名前:デフォルトの名無しさん [2007/09/15(土) 02:26:09 ] 名プログラマになる為に猛勉強だぜ。
956 名前:デフォルトの名無しさん mailto:sage [2007/09/15(土) 09:32:53 ] ここは知ったかばっかり
957 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 15:28:45 ] 知ったかな〜知ったかな〜うにゃうにゃ はれってほれってひれんら〜
958 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 18:37:19 ] >>957 迂闊にも笑ってしまいますた
959 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 17:05:01 ] SHRT_MIN >= INT_MIN && SHRT_MAX <= INT_MAX 常に成り立つと思うのですが sizeof(short) <= sizeof(int) は処理系に関係なく成り立ちますか?
960 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 17:07:56 ] はい。
961 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 18:26:29 ] ANSI C99準拠の標準ライブラリについて、詳しく説明しているサイトありませんか? 素直に本買ったほうがいいでしょうか?
962 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 18:35:59 ] っ[JIS X 3010]
963 名前:961 mailto:sage [2007/09/18(火) 19:21:05 ] >>962 ありがとう。でも高いねコレ…素直に本買います。
964 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 20:47:24 ] つ[ttp://www.jisc.go.jp]
965 名前:デフォルトの名無しさん [2007/09/19(水) 15:50:54 ] 設計(PAD)でファイルを開いて読み込んでファイルの情報を構造体に格納するのって どうやるか教えていただけませんか?
966 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 16:06:49 ] たぶんCの話じゃないと思うぞ
967 名前:デフォルトの名無しさん [2007/09/19(水) 17:28:22 ] 今C言語の勉強をしていて、ファイルの情報を構造体に格納して それをメモリに展開するってゆーのをやってまして
968 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 17:30:39 ] fread
969 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 17:32:23 ] そんなもんファイルにどういう形式でデータが記録されていて 格納する構造体はどんなものかによるとしか言えん
970 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 17:34:00 ] PADは関係あるのか?
971 名前:デフォルトの名無しさん [2007/09/19(水) 17:34:18 ] JIS X 3010-1993 を読むと 3.4 バイト 実行環境の基本文字集合の任意の要素を保持するために十分な大きさを持つデータ記憶域の単位。 1 バイト中のビット数は,処理系定義とする。 5.2.4.2.1 CHAR_BIT ビットフィールドでない最小オブジェクト(バイト)におけるビット数 6.3.3.4 sizeof演算子の結果は,そのオペランドの(バイト数での)大きさとする。 sizeof(char) == 1 となっているのですが,ここから char 型オブジェクトのデータ記憶域での大きさは 1 バイトで 1 バイトは CHAR_BIT ビットと判断できるでしょうか?
972 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 17:36:24 ] マジっすか。バイト=8bitだと信じてました。 int型が、その処理系で一番速く処理できるビット幅、というのは聞いたことありますが・・・
973 名前:967 [2007/09/19(水) 17:58:00 ] 今PADの最中なんです。 問題としてはファイルにある社員IDと氏名を構造体に格納し、 メモリに展開するというものです
974 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 18:06:04 ] C言語の規格改定って今でも進められているんでしょうか?
975 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 18:47:35 ] >>971 そう思って構わないはず。 >>973 常に8ビットを表す単位が必要なら、オクテットを使う。
976 名前:967 [2007/09/19(水) 19:03:57 ] 文字の長さが2-10で変化するってどゆ意味ですか? そもそも文字の長さってなんですか?
977 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 19:09:43 ] 次スレテンプレ 【ISO/ANSI/JIS】 C言語なら俺に聞け! Part 132 このスレは標準Cのみの限定スレです。 まず問題を冷静に吟味してCの話か否かをはっきりさせてから質問しましょう。 質問する前には最低限検索を。 エラー(警告含む)が起きたのならばエラーメッセージを書きましょう。 C FAQ 日本語訳 www.kouno.jp/home/c_faq/ Cプログラマ必読 ・プログラミング言語C(通称 K&R) www.amazon.co.jp/exec/obidos/ASIN/4320026926/250-7563469-9920244 他の過去ログはここに nssearch.hp.infoseek.co.jp/clang/ 前スレ 【ISO/ANSI/JIS】 C言語なら俺に聞け! Part 131 pc11.2ch.net/test/read.cgi/tech/1170338926/ GUIなどの標準Cではできない事の質問,ソース丸投げ、宿題、書籍 は 専門の別スレッド↓があるのでそこへさようなら。 【初心者歓迎】C/C++室 Ver.42【環境依存OK】 pc11.2ch.net/test/read.cgi/tech/1188748806/ C/C++の宿題を片付けます 95代目 pc11.2ch.net/test/read.cgi/tech/1187944110/
978 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 19:15:34 ] GUIなどの標準Cではできない事の質問,ソース丸投げ、宿題、書籍 は ↓ GUIなどの標準Cではできない事の質問、ソース丸投げ、宿題、書籍 は 何か気になるから変えてくれたら嬉しい
979 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 19:58:51 ] >>937 お前前も来たな 帰れ いや 死ね
980 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 19:59:21 ] >>973 だった
981 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 20:22:18 ] (char *)*char_list->c という式が表す値は (char *)型のポインタcが指しているデータ (char *)型のデータ のどっちなんでしょうか?
982 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 20:37:54 ] 演算子の優先順位から、(char *)(*(char_list->c))
983 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 20:47:49 ] >>982 その式を見るとカッコ(キャスト)よりも*演算子のほうが優先されている みたいなんですが、(1+2)*(3*3)のようなカッコとキャストとしてのカッコは 別物として扱われているんでしょうか?
984 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 20:52:45 ] そりゃ意味からして別物だろうが
985 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 20:56:27 ] ついでに言うと、関数呼出演算子の括弧も別物。
986 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 21:04:19 ] >>985 全部一緒くたにして考えてました。orz 最後にもう一つ、 char c = 'a'; char *pc = &c printf("%d\n", (int)*pc); 予想では上のコードは4バイト分の整数を出力すると思ったのに、 実際にやってみたらa一つ分の97しか出力しませんでした。 これは何故なんでしょうか?
987 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 21:06:35 ] 何を言ってるんだ、お前は
988 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 21:07:45 ] *(int*)pc とでもやりたかったのか?
989 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 21:09:33 ] >>986 何が言いたいか分からん。 97は2桁だろ。何が出て欲しいんだか。
990 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 21:11:57 ] >>986 charだろうがintだろうが10進数で出力したら97だろ
991 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 21:13:08 ] >>986 >4バイト分の整数 この部分を具体例をあげつつ詳細に説明してくれ
992 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 21:15:21 ] char c = 'a'; char *pc = &c; printf("%d\n", sizeof((int)*pc)); 4バイト(intの大きさ)分の整数が出力されているってのはあってるぞ
993 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 21:16:26 ] >>986 これでどうだ。 printf("%.8X\n", (unsigned int)(unsigned char)*pc); ここにunsigned intへのキャスト演算子は不要だがサービスしておいた。
994 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 22:21:24 ] >>973 PADって構造化フローチャートみたいなやつ?
995 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 22:24:57 ] >>994 大学でやった記憶が
996 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 02:05:03 ] 99というのはISOの年度だからANSI C99というのはおかしくないか
997 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 02:12:12 ] おかしいね。 ANSI C89 ISO C90 ISO C95(と言っていいのか) ISO C99
998 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 08:33:04 ] 個人的にはC89とかC99の前にANSIとかISOとか付いてる時点でキモい。 まぁキモいだけで、だからどうしようってほどじゃないけど。
999 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 09:18:44 ] 埋め
1000 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 09:20:04 ] 梅
1001 名前:1001 [Over 1000 Thread] このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。