• ベストアンサー

セミコロンについて

たまにC++ソースでセミコロンが2つついている行がありますが どのような理由で使用しているか? 教えてください。 例えば、printf("%s : DataDisp [%d]\n", __FILE__, __LINE__);; などで最後に;;が2つく場合です。

質問者が選んだベストアンサー

  • ベストアンサー
  • php504
  • ベストアンサー率42% (926/2160)
回答No.4

自分ではコピー貼り付けした後に;を打って2重になることがたまにあります。 気づいたらすぐ消しますが。 でも他人のソースで見たことは無いですね。

starpochi
質問者

お礼

ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

  • plh
  • ベストアンサー率50% (4/8)
回答No.3

皆さんのおっしゃるとおりですね。 まともなものがあるとすれば、 while (1) { ... } の代わりに for(;;) { ... } というのはありえます。行末ではないですが。

starpochi
質問者

お礼

回答ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。
回答No.2

Cでは、; のみの行は「空文」(空式に ; がついたもの)で、何もしない文ということになっています。ので考えられそうなのは……。 1)単なるミスタイプ 2)デバッグ専用の行などで、あとで ;; で検索しやすくしたもの くらいかと。

starpochi
質問者

お礼

回答ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。
  • roygbiv
  • ベストアンサー率14% (1/7)
回答No.1

たまにっていうのはどの程度ですか? 単にタイプミスでは? コンパイルは通るでしょうから気がつかないだけだったりして。

starpochi
質問者

お礼

回答ありがとうございます、

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Perlで2つのテキストファイルの処理する方法

    めぐみです。 tatsu99さま、以下のプログラムを親切にアドバイス頂きまして本当にありがとうございました。 追記で質問させて頂きたいことがあります。 --------------------------------------------------------------- $file_a = shift(@ARGV); $file_b = shift(@ARGV); open FHA,$file_a or die("can't open $file_a"); @data_a = (); while($line=<FHA>){ chomp($line); push @data_a,$line } close FHA; open FHB,$file_b or die("can't open $file_b"); @data_b = (); while($line=<FHB>){ chomp($line); push @data_b,$line } close FHB; foreach $da (@data_a){ printf("%s%d%d%d\n",$da,$data_b[0],$data_b[1],$data_b[2]); printf("%s%d\n",$da,$data_b[0]); printf("%s%d%d\n",$da,$data_b[1],$data_b[2]); printf("%s\n",$da); printf("%s%04d%02d%02d\n",$da,$data_b[0],$data_b[1],$data_b[2]); printf("%s%02d%02d\n", $da,$data_b[1],$data_b[2]); printf("%d%d%d%s\n",$data_b[0],$data_b[1],$data_b[2],$da); printf("%d%s\n",$data_b[0],$da); printf("%d%d%s\n",$data_b[1],$data_b[2],$da); printf("%s\n",$da); printf("%04d%02d%02d%s\n",$data_b[0],$data_b[1],$data_b[2],$da); printf("%02d%02d%s\n",$data_b[1],$data_b[2],$da); }--------------------------------------------------------- 下記のような内容を追加で出力させることは難しいでしょうか。 1.B.txtを元に下記のように数字だけのデータも追加で出力させたかったです(1行目1986,2行目3,3行目6の場合) 198636 1986 36 19860306 0306 2.A.txtを元にA.txtから下記の内容も追加で出力させたかったです(4行目以降は無視して構いません)。 1行目と2行目 2行目と3行目 3行目と1行目 2行目と1行目 1行目と3行目 3行目と2行目 以上、何卒よろしくお願いいたします。

  • C/C++ の __LINE__ マクロを文字列化する方法

    C/C++ プリプロセッサの定義済みマクロ __LINE__ の数値を 文字列化する方法がわかる方、いますか ? # 演算子(マクロ?)を使ってもだめでした。 そもそも不可能なのでしょうか ? printf("%d\n", __LINE__); // 行番号(数値) : OK #define tostr(n) # n printf("%s\n", tostr(__LINE__); // 文字列化して表示 : NG # 「意味がない」という回答はカンベンしてください.。

  • C言語のプログラムに関する質問です。

    C言語初心者で困っています。 SNをサンプリング数、FNをファイル数として、テキストファイルの1行目のデータ(kari[0])と2行目のデータ(kari[1])をそれぞれCH1、CH2に読み込むような以下のようなプログラムがあります。 ------------------------------------------ //読込みファイル名の設定// for(j=1;j<FN+1;j++){ sprintf(file_name,"%s%d%s",file,j,".txt"); printf("%d%s\n",j,file_name); if ((fp = fopen(file_name, "r")) == NULL){ printf("Error: Can't open file; %s\n", file_name); } //データの読込み// for(i=0;i<SN;i++){ fscanf(fp,"%lf,%lf\n",&kari[0],&kari[1]); ch1[i]=kari[0]; ch2[i]=kari[1]; } fclose(fp);       ・       ・       ・ fclose(fp); } ---------------------------------------------- しかし、テキストファイルの初めの3行には不必要な文字列が存在するため、4行目から読み込むように設定したいのですが、やり方がよく分かりません。 どのようにプログラムを書き換えれば良いか、教えていただけると助かります。 よろしくお願いします。

  • ポインタ?

    #include <stdio.h> main() { char s[] = "I love cat and dog."; char c = 'a'; char *p = s; int n = 0; printf("\"%s\"の中から\'%c\'をさがします。\n", s, c); while(*p != '\0') { if(*p == c) { printf("%d番目で発見しました。\n", p - s + 1); ++n; } ++p; } if(n == 0) { printf("1つも見つかりませんでした。\n"); } else printf("全部で%d個見つかりました。\n", n); return 0; } わからないので質問したいのですが、これは「Cの絵本」という、 本に出ているサンプルプログラムです。 わからないところは、 12行目の、printf("%d番目で発見しました。\n", p - s + 1); ところです。その、「p - s」のところが特にわかりません。 ポインタって言うのは、アドレスを格納する変数ですよね? その、pからsを引いても0になるんじゃないかと思って、理解が できません。どうして、このp-sで、cの位置が発見できるのかが 理解できません。最後の+1は配列が0から始まるんで+1にすれば いいのはわかるんですが、p-sでどんなことが起きているかが 理解できなくて。ポインタをちゃんと理解できていないから、 こういった疑問が出てくるんですかね? ほかの参考書も本屋さんに行って見てみようと思っているんですが、 どなたか教えていただけませんか? よろしくお願いします。

  • サブルーチン、グローバル変数がわかりません。

    2つの行列の計算をサブルーチン関数とグローバル変数を使って行いたいのですが、サブルーチン関数を宣言する為の、プロトタイプ宣言やプロトタイプ定義や、グローバル変数など、 調べてもよく理解できません。 とりあえず、二次元配列を用いたソースコードを書いてみました。 (1)14行目と23行目からのfor文、(2)40行目と51行目と62行目からのfor文を1つにまとめて、最初のプロトタイプ宣言は void 関数(double a[LINE][COLUMN] , double b{LINE][COLUMN] , double c[LINE][COLUMN]) ; にすればいいと思うのですが、 その後は、どのようにすればいいのでしょうか? あと、scanfも使って、aとbも入力できるようにしたいです。 1 #include <stdio.h> 2 3 #define LINE 3 4 #define COLUMN 3 5 6 int main(int argc, char *argv[]) 7 { 8 double a[LINE][COLUMN] ; 9 double b[LINE][COLUMN] ; 10 double c[LINE][COLUMN] ; 11 int i ; 12 int j ; 13 14 for(i= 0;i < LINE ; i++) 15 { 16 for(j = 0 ; j<COLUMN ; j++) 17 { 18 printf("A[%d][%d]=", i+1 , j+1 ); 19 scanf("%f", &a[i][j]); 20 } 21 } 22 23 for(i =0;i < LINE ; i++) 24 { 25 for(j = 0 ; j<COLUMN ; j++) 26 { 27 printf("B[%d][%d]=", i+1 , j+1 ); 28 scanf(" %f", &b[i][j]); 29 } 30 } 31 32 for(i =0;i < LINE ; i++) 33 { 34 for(j = 0 ; j<COLUMN ; j++) 35 { 36 c[i][j] = a[i][j] + b[i][j] ; 37 } 38 } 39 40 printf("\n行列A:\n"); 41 for(i =0;i < LINE ; i++) 42 { 43 for(j = 0 ; j<COLUMN ; j++) 44 { 45 printf("%10.5f" , a[i][j]) ; 46 } 47 48 printf("\n"); 49 } 50 51 printf("\n行列B:\n"); 52 for(i= 0;i < LINE ; i++) 53 { 54 for(j = 0 ; j<COLUMN ; j++) 55 { 56 printf("%10.5f" , b[i][j]) ; 57 } 58 59 printf("\n"); 60 } 61 62 printf("\nC(和):\n"); 63 for(i= 0;i < LINE ; i++) 64 { 65 for(j = 0 ; j<COLUMN ; j++) 66 { 67 printf("%10.5f" , c[i][j]) ; 68 } 69 70 printf("\n"); 71 } 72 return 0 ; 73 }

  • C言語コンパイルエラー cygwin

    windows7の64bitでcygwinを使用しております。 過去に作成されたソースファイルをコンパイルしたいのですが、画像のようなエラーが出てしまい、うまくいきません。 おかしなところがあれば、ご指摘いただけないでしょうか。 114行目 sprintf(file_in,"/media/HD/WWE\ data/mm/222/%s%s","",file_name); sprintf(file_in,"%s%s",file_in,".dat"); if((fp = fopen(file_in,"r")) !=0){ printf("%s\n",file_in); sprintf(print_name,"%s",file_in); static unsigned long hex[nn],xx; 198行目 xx=hex[i]*(-1)+4294967295;

  • 値を変数に代入してprintfで表示しようとしてもうまくいきません

    値を変数に代入して、printfで表示しようとしてもうまくいきません。 ソースのどこが悪いか教えていただけないでしょうか? 変数の値を1個ずつ表示する場合は、正常になります。 問題は、1行で表示する場合に1個目の値は出るのですが正常な表示にはなりません。 //ソース開始 #include <stdio.h> #include <windows.h> int main() { LARGE_INTEGER i64,h64; LONGLONG work,h,m,s; QueryPerformanceCounter(&i64); QueryPerformanceFrequency(&h64); //起動時間をミリ秒取得 work = i64.QuadPart*1000 / h64.QuadPart; //時間をhに入れる h = work / 1000 / 3600; //分をmに入れる m = (work / 1000 - h * 3600) / 60; //秒をsに入れる s = work / 1000 - h * 3600 - m * 60; //表示 printf("%d時間%02d分%02d秒\n",h,m,s); printf("%d時間\n",h); printf("%d分\n",m); printf("%d秒\n",s); printf("%d秒\n",work); return 0; } //ソースここまで //実行結果 289時間00分55秒 289時間 55分 54秒 1043754590秒 続行するには何かキーを押してください . . . //理想の表示結果 1行目が以下のようになってほしい 289時間55分54秒

  • 動きが部分的におかしくなる要因

    以前はアドバイスありがとうございました。 配列オーバーフロー? http://okwave.jp/qa4406037.html 以前のプログラムで以下を暗号化→解読化すると元通りにはならず、 6,8,64,66,67,68行目だけがおかしくなります。 明らかにその行に無い文字が交じってきたりしますが、 初期化はしておりますし、他の行は大丈夫なのに 何故この行だけがおかしくなるのか(暗号化の時点で既におかしいです) わかりません。 同じ作り込みをしていて、一部分だけ動きがおかしくなるのは どういった理由があるのでしょうか? 特に周期性は見られません。 ↓下の行から1行目 #define MAX_MOJI 250 /* ファイルNAME */ #include <stdio.h> #include <stdlib.h> typedef struct { char ch; double d1; float fl; short sh; int in; long ln; } testcell; char c1; char ch2[2]; char ch3[3]; double d; testcell t; char c2; char c3; long ln; float fl; char *p; static int st; void main( void ); void func( int ); void main( void ){ char* alc = malloc( 1000 ); func( 100 ); printf( "\nメイン\n" ); printf( "allocated addr : %p\n", alc ); printf( "func() addr : %p\n", func ); printf( "main() addr : %p\n", main ); printf( "addr of printf : %p\n", printf ); printf( "char c1 %2d : %p\n", sizeof(c1), &c1 ); printf( "char ch2[2] %2d : %p\n", sizeof(ch2),ch2 ); printf( "char ch3[3] %2d : %p\n", sizeof(ch3),ch3 ); printf( "double d %2d : %p\n", sizeof(d), &d ); printf( "testcell t %2d : %p\n", sizeof(t), &t ); printf( "char c2 %2d : %p\n", sizeof(c2), &c2 ); printf( "char c3 %2d : %p\n", sizeof(c2), &c3 ); printf( "long ln %2d : %p\n", sizeof(ln), &ln ); printf( "float fl %2d : %p\n", sizeof(fl), &fl ); printf( "char *p %2d : %p\n", sizeof(p), &p ); printf( "static int st %2d : %p\n", sizeof(st), &st ); printf( "\nコウゾウタイ\n" ); printf( "char ch %2d : %p\n", sizeof(t.ch), &t.ch ); printf( "double d1 %2d : %p\n", sizeof(t.d1), &t.d1 ); printf( "float fl %2d : %p\n", sizeof(t.fl), &t.fl ); printf( "short sh %2d : %p\n", sizeof(t.sh), &t.sh ); printf( "int in %2d : %p\n", sizeof(t.in), &t.in ); printf( "long ln %2d : %p\n", sizeof(t.ln), &t.ln ); } void func( int p ){ static int s; int loc; printf( "\nファンクション\n" ); printf( "parameter addr : %p\n", &p ); printf( "func static addr : %p\n", &s ); printf( "func local addr : %p\n", &loc ); }

  • LaTeXでソースコード

    LaTeXで文書中にソースコードを 行番号付きで載せるのはlistings.styを使ってできたのですが、 行番号 + “:”(セミコロン)で表示するような方法はないでしょうか。 例えば、こんな風にです 1: #include <stdio.h> 2: 3: int main(void){ 4: printf("hello\n"); 5: return 0: 6: }

  • 学校の課題で

    sin,cos,tanを0~90度を出せっていわれたのですが #include <stdio.h> #include <math.h> main() { int N; float x; char *line="-------------------------------------\n"; printf(line); printf("%3s %5s %10s %13s \n", "kakudo", "sin","cos","tan"); for(N=0; N<=90; ++N) { x=N*3.14159265358979323846264338327950288/180; if(N%10==1) { printf(line); } if(N=90) { tan(N)= ; } printf("%3d %7.6f %10.6f %13.6f \n", N, sin(x), cos(x), tan(x)); } printf(line); } で出ません。 間違いは if(N=90){tan(N)= ;} の部分なのですが、どうすれば出せますか?

TS6330修理後に実施すべきこと
このQ&Aのポイント
  • TS6330使用時に6832エラーメッセージが表示され修理を依頼。修理後、メインボードを交換済みで戻ってきたが、変更点①の入力がうまくいかない。
  • キヤノン製品TS6330の修理後、プリンターの液晶画面での入力がうまくいかず、問題が続いている。
  • TS6330の修理後、プリンターの液晶画面での変更点①の入力ができない問題が発生している。
回答を見る