CおよびC++での未定義動作
ここでは、いくつかのCおよびC++コードを確認します。結果を推測してみてください。コードはいくつかのランタイムエラーを生成します。
1.ゼロ除算エラーは未定義です。
サンプルコード
#include <iostream>
using namespace std;
int main() {
int x = 10, y = 0;
int z = x / y;
cout << "Done" << endl;
} 出力
Runtime error for divide by zero operation
2.初期化されていない変数を使用しようとしています。
サンプルコード
#include <iostream>
using namespace std;
int main() {
bool x;
if(x == true)
cout << "true value";
else
cout << "false value";
} 出力
false value (This may differ in different compilers)
3.nullポインタ値にアクセスしようとしています。
サンプルコード
#include <iostream>
using namespace std;
int main() {
int *ptr = NULL;
cout << "The pointer value is: " << *ptr;
} 出力
Runtime error for accessing null pointer values
4.nullポインタ値にアクセスしようとしています。
サンプルコード
#include <iostream>
using namespace std;
int main() {
int array[10];
for(int i = 0; i<=10; i++) {
cout << array[i] << endl;
}
} 出力
Runtime error for accessing item out of bound. Some compiler may return some arbitrary value, not return any error
5.署名されたintの制限を超えています。
サンプルコード
#include <iostream>
using namespace std;
int main() {
int x = INT_MAX;
cout << "x + 1: " << x + 1;
} 出力
x + 1: -2147483648 circulate to the minimum number of signed int
6.文字列リテラルの一部の文字を変更しようとしています。
サンプルコード
#include <iostream>
using namespace std;
int main() {
char *str = "Hello World";
str[2] = 'x';
cout << str;
} 出力
Runtime error because we are trying to change the value of some constant variables.
-
C++で重複する円と長方形
(radius、xc、yc)として表される円があると仮定します。ここで、(xc、yc)は円の中心座標です。また、(x1、y1、x2、y2)として表される軸に沿った長方形があります。ここで、(x1、y1)は左下隅の座標であり、(x2、y2)は右上隅の座標です。長方形の角。円と長方形が重なっていないか確認する必要があります。 したがって、入力が次のような場合 そうすれば、出力は真になります。 これを解決するには、次の手順に従います- 関数eval()を定義します。これには、a、b、c、が必要です。 bの最大値とaとcの最小値を返します メインの方法から、次のようにしま
-
C++でのDominoとTrominoのタイリング
ドミノとトロミノの2種類の形状があるとします。以下のように回転させることができます- タイリングでは、すべての正方形をタイルで覆う必要があります。ここで、2つのタイルは、ボード上に2つの4方向に隣接するセルがあり、タイルの1つだけが両方の正方形をタイルで占めている場合にのみ異なります。 Nが与えられた場合、2xNボードをタイリングできる方法をいくつ見つける必要がありますか?したがって、入力が3の場合、出力は5になります。したがって、配置は[XYZ XXZ XYYXXYXYY]と[XYZYYZXZZ XYY XXY]になります。ここでは、タイルごとに異なる文字が使用されます。 これを