C/C++プログラミング小知識(雑記)


条件と:&&
if(x&&y):xがtrueであるか否かを先に判断する.xがtrueであればyを判断し,xがfalseであればyを判断せずif文の内容を直接スキップする.エラーポイント:配列またはメモリオーバーフロー(RE:Runtime Error)
例:正しいコード
//     4 arr    0  
//   0    
#include
int arr[10]={
     -1,2,3,4,5,6}, n=3;
int main(){
     
	for(int i=0; i<=100; i++){
     
		if(n-i>=0 && arr[n-i]>0){
     
			printf("%d",arr[n-i]);
		}
	}
	return 0;
}

エラーコード
#include
int arr[10]={
     -1,2,3,4,5,6}, n=3;
int main(){
     
	for(int i=0; i<=100; i++){
     
		if(arr[n-i]>0 && n-i>=0){
     
			printf("%d",arr[n-i]);
		}
	}
	return 0;
}

まずarr[n-i]が負数arr[負数]であるかどうかを判断する:この場合は未定義であり、境界を越えてアクセスする.