我已經合併3變量成爲一個變量的問題合併3變量:我怎麼能在一個變量
例如:
int var1,var2,var3;
int result;
var1 = 1;
var2 = 2;
var3 = 3;
result = ........??;
printf("Result %d",result);
output :
123
我怎樣才能做到這一點?
我已經合併3變量成爲一個變量的問題合併3變量:我怎麼能在一個變量
例如:
int var1,var2,var3;
int result;
var1 = 1;
var2 = 2;
var3 = 3;
result = ........??;
printf("Result %d",result);
output :
123
我怎樣才能做到這一點?
Yay,C++ 11 variadic模板真棒!這裏有一個N
-finitely可擴展版本,假設sum(args) < INT_MAX
template<int max, int ...arguments>
int merge_integers()
{
int args[] = { arguments... };
int size = sizeof(args)/sizeof(int);
int mul = 1;
int result = 0;
for (int i = size; i--;)
{
result += args[i] * mul;
mul *= max;
}
return result;
}
用法示例:
printf("%d\n", merge_integers<10, 5, 4, 3, 2, 1>());
printf("%x\n", merge_integers<16, 0xA, 0xB, 0x1, 0x3, 0x5>());
printf("%o\n", merge_integers<8, 1, 2, 3, 4, 7>());
輸出:
54321 ab135 12347
result = var1 * 100 + var2 *10 + var3;
現在用C++模板編寫一個'N'有限可擴展版本! JK +1 –
如果var1,var2和var3不是1位數字 –
@izomorphius那麼...這仍然是三個變量的組合。它的問題沒有一個說它必須是可逆的。 –
它應該是:
char str[100];
sprintf(str, "%d%d%d", var1, var2, var3);
sscanf(str, "%d", &result); // or atoi
是的,但這是不可逆的,並且sscanf在溢出時具有未定義的行爲... –
的printf( 「結果%d%d%d」,VAR1,VAR2,VAR3);
你真的需要詮釋的變量?字符串是否符合您的要求?
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
int
main()
{
int var1 = 1;
int var2 = 2;
int var3 = 3;
ostringstream oss;
string result;
oss<<var1<<var2<<var3;
result = oss.str();
cout<<result<<endl;
return 0;
}
你想要一個C解決方案還是一個C++解決方案?他們不是同一種語言。 – meagar
你爲什麼要這樣做?家庭作業?如果是這樣,以這種方式標記。 (罷工......不這樣做!) – tmpearce
@tmpearce:[家庭作業]標籤已被禁止。 –