我确定这个问题已经有人问过了,但我找不到答案。
如果我有一个功能,让我们说:
int Power(int number, int degree){
if(degree==0){
return 1;
}
return number*Power(number, degree-1);
}
Run Code Online (Sandbox Code Playgroud)
它仅在degree是非负时才起作用int。如何防止使用错误的参数调用此函数?
例如,如果程序员编写cout<<Power(2, -1);,我希望编译器拒绝编译代码并返回某种错误消息(例如“函数 Power 只接受非负整数”)。
在这种情况下,另一种选择是函数不返回任何值。例如:
int Power(int number, unsigned int degree){
if(degree<0){
//return nothing
}
if(degree==0){
return 1;
}
return number*Power(number, degree-1);
}
Run Code Online (Sandbox Code Playgroud) 假设我们要使用以下代码实现冒泡排序:
void bubbleSort(int arr[], int n){
for(int i=0; i<n-1; i++){
for(int j=i+1; j<n;j++){
if(arr[i]>arr[j]){
swap(arr[i], arr[j]);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
函数中是否应该有一个&beforearr[i]和arr[j]in swap,有什么区别?我记得曾在某处读到不需要&在数组元素之前放置符号以直接使用地址。我知道这是一个愚蠢的问题,所以请原谅我的提问,但这些小细节可以帮助我更好地理解指针。
我正在使用以下printf功能:
printf("%-8s%-21s%-17s%-6s\n", "index", "Name", "Effect", "Type");
Run Code Online (Sandbox Code Playgroud)
但是,我想使用预定义的宏而不是“8”:
#define NAME_SIZE 8
Run Code Online (Sandbox Code Playgroud)
当我尝试替换它时,IDE 无法识别它并给出错误:(Invalid conversion specifier N宏的第一个字母)。我尝试将宏名称放在()括号中或放置一个间隔,但也不起作用。所以我想知道:甚至可以将宏作为参数放入printf函数中,如果是,如何?我很抱歉提出这样一个奇怪的问题,但我找不到任何信息。