if文の論理積について
if文の論理積についての質問があります.
以下の関数は(int)num番目の素数を戻り値とする関数です.
long sosuu(int num)
{
long a,b;
int count = 0;
for(a = 2; ; a++){
for(b = 2; b < a; b++){
if(a % b ==0) break;
}
if( (a == b) && (count++ == num)) break; /*ここが問題*/
}
return a;
}
今のところ,この関数で問題はおきていませんが,
if((a==b)&&(count++ == num));
についての質問です.
この場合,C言語の内部処理では,(a!=b)の場合,countはインクリメントされないのでしょうか?
論理積で左辺が0の場合は右辺の処理も行われないのでしょうか?
僕が使っている開発環境(BorlandC++,VC++)では両方とも問題は無かったのですが,C言語業界全体としてはどうなのでしょう?
僕としてはソースが見やすくなって都合が良いのですが,他の開発環境担になったとき,バグを出すことになりそうで少し不安です.
他の開発環境を持っている方,教えてください.
この関数を使うメイン関数も置いておくので,良かったら,チェック用として使ってください.
/*プログラムエントリポイント*/
int main(int num,char *main_hikisu[])
{
long input,i,count,sosu;
for(i = 1; i < num ; i++)
{
/*文字列から数字を取得*/
input = atoi(main_hikisu[i]);
/*素因数分解できない形の取得*/
if(input <= 1){
printf("%sは素因数分解できません\n",main_hikisu[i]);
continue;
}
/*素因数分解開始*/
printf("%d = ",input);
count = 0;
do{
sosu = sosuu(count);
if(input % sosu == 0){
input /= sosu;
printf("%d",sosu);
if(input != 1) printf("*");
}else count++;
}while( input != 1);
printf("\n");
}
if(num == 1){
printf("このプログラムはコマンドライン引数に数字を入れることにより,素因数分解を実行します");
}else{
printf("プログラム終了\a");
}
return 0;
}
以上です.よろしくお願いします.
お礼
ありがとうございます。 VBです。 うまくいきました。