void fun()
{
// what should be the logic here to print x=20 instead of x=10 in the main function?
}
void main()
{
int x=20;
fun();
x=10;
printf("%d",x);
}
これは私のクラステストの質問の1つでした。私は静的なintを使用するかどうかはわかりませんでした。Cインタビュー出力
void fun()
{
// what should be the logic here to print x=20 instead of x=10 in the main function?
}
void main()
{
int x=20;
fun();
x=10;
printf("%d",x);
}
これは私のクラステストの質問の1つでした。私は静的なintを使用するかどうかはわかりませんでした。Cインタビュー出力
私はこの習慣を許しません。これは恐ろしい考えです。しかし、技術的には、これは質問の基準、一種のものです。
void fun()
{
// Essentially this is a function with an empty body
// And I don't care about() in a macro
// Because this is evil, regardless
#define printf(a, b) (printf)(a, b*2)
}
void main() // I know this is not a valid main() signature
{
int x = 20;
fun();
x = 10;
printf("%d", x);
}
Ha。私は奇妙な方法があることを知っていたはずです。 –
OP(@Muthu)は知っています(これはvoid_ptrがすでにこれを知っているので確信しています)、これは 'fun()'に "logic"を入れません。 (前処理/マクロ展開は_前回のコンパイル時に起こります。つまり、これは技術的には 'main()'の "logic"のみを変更します)。 – RastaJedi
標準的な免責事項が適用されます。
アプローチ1:内部範囲に新しいx
変数を作成します。
void fun()
{
#define fun() { int x
#define printf } printf
}
アプローチ2:x
は常に20
ことができるように10
に変わり二変数を定義します。だけ知っているので
void fun()
{
#define x x=20,y
}
、 'メイン()' Cに 'int型メイン(無効)です'と 'int型のmain(int型のargc、char型** ARGV)'(または同等のための2人のだけ有効な署名、 'int main(int argc、char * argv [])')。私が考えることができる唯一のものは、おそらく彼らが何であるかではないでしょう(あるいは、おそらくそれが "主な機能"であると言います)、 'printf(" 20 \ n " );そして 'fun()'で 'exit(0);'を実行します。 – RastaJedi
メインメソッドからのみ印刷する必要がありますか? – Kaushal28
'fun()'と 'exit()'の中から20をプリントすることができます...テストで尋ねるのにまだ愚かな質問。 –