在C言语中,整数是基本的数据范例之一。C言语供给了多种整数范例,包含:
int
:平日为32位,有标记整数。short
:平日为16位,有标记整数。long
:平日为32位,有标记整数,在某些平台上可能为64位。long long
:至少为64位,有标记整数。每个整数范例都有其特定的取值范畴。比方,int
范例的取值范畴平日是 -2,147,483,648 到 2,147,483,647。
在C言语中,可能利用scanf
跟printf
函数来输入跟输出整数。
scanf
输入整数#include <stdio.h>
int main() {
int number;
printf("请输入一个整数: ");
scanf("%d", &number);
printf("你输入的整数是: %d\n", number);
return 0;
}
printf
输出整数#include <stdio.h>
int main() {
int num = -123;
printf("The signed integer is: %d\n", num);
return 0;
}
C言语支撑基本的整数运算,包含加、减、乘、除跟取余。
#include <stdio.h>
int main() {
int a = 10;
int b = 5;
printf("加法: %d + %d = %d\n", a, b, a + b);
printf("减法: %d - %d = %d\n", a, b, a - b);
printf("乘法: %d * %d = %d\n", a, b, a * b);
printf("除法: %d / %d = %d\n", a, b, a / b);
printf("取余: %d %% %d = %d\n", a, b, a % b);
return 0;
}
当整数运算的成果超出其范例所能表示的范畴时,会产生溢出。在C言语中,溢出平日会招致不决义行动。
#include <stdio.h>
#include <limits.h>
int main() {
int a = INT_MAX;
int b = 1;
if (a > 0) {
printf("溢出: %d + %d\n", a, b);
} else {
printf("不溢出: %d + %d\n", a, b);
}
return 0;
}
long long
范例为了处理更大年夜的整数,可能利用long long
范例。
#include <stdio.h>
int main() {
long long a = LLONG_MAX;
long long b = 1;
printf("加法: %lld + %lld = %lld\n", a, b, a + b);
return 0;
}
#include <stdio.h>
#include <limits.h>
int reverse(int x) {
int res = 0;
while (x != 0) {
int pop = x % 10;
x /= 10;
if (res > INT_MAX / 10 || (res == INT_MAX / 10 && pop > 7)) return 0;
if (res < INT_MIN / 10 || (res == INT_MIN / 10 && pop < -8)) return 0;
res = res * 10 + pop;
}
return res;
}
int main() {
int number = 123;
printf("原始整数: %d\n", number);
printf("反转后的整数: %d\n", reverse(number));
return 0;
}
对超长整数的运算,可能利用字符串或数组来表示跟存储这些数。
#include <stdio.h>
#include <string.h>
void addStrings(char* num1, char* num2, char* result) {
int len1 = strlen(num1);
int len2 = strlen(num2);
int carry = 0;
int i = len1 - 1;
int j = len2 - 1;
int k = 0;
while (i >= 0 || j >= 0 || carry) {
int sum = carry;
if (i >= 0) {
sum += num1[i--] - '0';
}
if (j >= 0) {
sum += num2[j--] - '0';
}
carry = sum / 10;
result[k++] = (sum % 10) + '0';
}
result[k] = '\0';
reverse(result);
}
int main() {
char num1[] = "12345678901234567890";
char num2[] = "98765432109876543210";
char result[100];
addStrings(num1, num2, result);
printf("跟: %s\n", result);
return 0;
}
以上是C言语中整数处理的一些基本技能跟困难处理方法。经由过程进修跟现实,你可能更好地控制C言语的整数处理才能。