سؤال

هل من الممكن طباعة Hello مرتين باستخدام واحد condition?

if  "condition"
  printf ("Hello");
else
  printf("World");
هل كانت مفيدة؟

المحلول

if ( printf("Hello") == 0 )
    printf ("Hello");
else
    printf ("World");

:-)

نصائح أخرى

"condition" === (printf("Hello"), 0)

عرجاء حقا:

int main() {
    if  (printf("Hello"), 0)
        printf ("Hello");
    else
        printf("World");
}

أنا أفضل استخدام المشغل فاصلة لأنه ليس لديك للبحث عن قيمة الإرجاع printf من أجل معرفة ما المشروط لا.وهذا يزيد من سهولة القراءة و الصيانة.:-)

يبدو لي أن بعض مقابلة اللغز.آمل أن يكون هذا هو قريب إلى ما تريد.


#include <stdio.h>

int main()
{
 static int i = 0 ;
 if( i++==0 ? main(): 1)
  printf("Hello,");
 else
  printf("World\n");

 return 0 ;
}

طباعة Hello, World

مشبك حزام الأمان الخاص بك:

#include <stdio.h>
#include <setjmp.h>

int main()
{
    jmp_buf env;

    if (!setjmp(env))
    {
        printf("if executed\n");
        longjmp(env, 1);
    }
    else
    {
        printf("else executed\n");
    }

    return 0;
}

طباعة:

if executed
else executed

هل هذا ما تعنيه ؟ أشك في ذلك, لكن على الأقل ممكن.باستخدام fork يمكنك أن تفعل ذلك أيضا ، ولكن الفروع سيتم تشغيل في عمليات مختلفة.

إذا كان على Unix:

if  (fork())
    printf ("Hello");
else
    printf("World");

Ofcoures هذا لا يضمن النظام 0f البصمات

#define CONDITION (0) if (0) {} else

أو بعض من هذا القبيل.

إذا كنت ترى مثل هذا السؤال في مقابلة الهرب بأسرع ما يمكن!الفريق الذي يسأل مثل هذه الأسئلة لا بد أن تكون غير صحية.

تعديل نسيت توضيح - هذا يعتمد على "آخر" المتطابقة مع أقرب فتح "إذا" ، و ذلك كما هو مكتوب "إن حالة" بدلا من إذا كان (الشرط) - بين قوسين من شأنه أن يجعل لغز غير قابل للحل.

if ( printf("Hello")==0)

انظر [http://www.coders2020.com/what-does-printf-return]

(مات صححت = شكرا ، ج بعيدا)

على if بيان ينفذ واحدة أو أخرى من التحكم في البيانات (سواء printf في المثال الخاص بك).بغض النظر عن ما كنت تستخدم ل condition, هذا مقتطف إما طباعة "مرحبا" أو "العالم" ، ولكن أبدا على حد سواء.

تحرير:حسنا, حتى انها خدعة السؤال و يمكنك وضع كل ما تريد في حالة (بما في ذلك دعوة إلى كامل وظيفة أخرى أن يفعل أي شيء تريد).ولكن هذا لا يكاد مثيرة للاهتمام.لا أستطيع أن أصدق أنني حصلت downmodded على إعطاء الإجابة الصحيحة.

تعليق "آخر" ;)

if(foo)
{
    bar();
}
//else
{
    baz();
}

دون معرفة قيمة الإرجاع printf من قمة رأسك:

if (printf("Hello") && 0)
    printf("Hello");
else
    printf("World");

الأساسية الجواب هو أنه في المسار العادي للأحداث كنت لا ترغب في تنفيذ كل البيانات في 'إذا' كتلة 'آخر' كتلة واحدة تمر من خلال رمز (لماذا عناء مع حالة إذا كنت تفعل) ولا يمكن تنفيذ كل من مجموعات من البيانات دون القفز من خلال بشع الأطواق.

بعض بشع الأطواق - رمز الشر!

    if (condition == true)
    {
         ...stuff...
         goto Else;
    }
    else
    {
Else:
        ...more stuff...
    }

طبعا هو عادي إساءة استعمال (أي) اللغة لأنه يعادل:

    if (condition == true)
    {
         ...stuff...
    }
    ...more stuff...

ومع ذلك ، فإنه يمكن تحقيق ما هو السؤال يسأل.إذا كان لديك لتنفيذ كل من كتل ما إذا كان الشرط صحيحا أو خاطئا ، ثم تصبح الأمور أصعب قليلا.

    done_then = false;
    if (condition == true)
    {
Then:
         ...stuff...
         done_then = true;
         goto Else;
    }
    else
    {
Else:
        ...more stuff...
        if (!done_then) goto Then;
    }
int main()
{
    runIfElse(true);
    runIfElse(false);

    return 0;
}

void runIfElse(bool p)
{
    if(p)
    {
     // do if
    }
    else
    {
     // do else
    }
}
if  (true) printf ("Hello"); if (false)
    printf ("Hello");
else
    printf("World");

لا أحب exit?

if(printf("HelloWorld"), exit(0), "ByeBye") 
    printf ("Hello");
else
    printf ("World");

لذا...كنت ترغب في تنفيذ التعليمات البرمجية داخل إذا كتلة...وقانون داخل كتلة آخر...من نفس if/else?ثم...يجب التخلص من آخر والعصا طحت البرمجية في إذا.

if something
  do_this
  do_that
end

في بيان آخر يهدف إلى تنفيذ فقط إذا كان لا يتم تنفيذ والعكس صحيح, وهذا هو بيت القصيد.هذا هو السؤال الغريب...

هذا يمكن أن يعمل:

if (printf("Hello") - strlen("Hello"))
    printf("Hello")
else
    printf("World")

هذا مقتطف يؤكد عودة قيمة printf:عدد الأحرف المطبوعة.

فقط ضع الكود قبل أو بعد إذا..آخر كتلة.

بدلا من ذلك, إذا كان لديك "إذا آخر إذا آخر" كتلة حيث تريد تنفيذ التعليمات البرمجية في بعض (وليس كل) الفروع فقط وضعه في وظيفة منفصلة و استدعاء هذه الدالة داخل كل كتلة.

الحل 1:

int main(int argc, char* argv[])
{   
    if( argc == 2 || main( 2, NULL ) )
    {
        printf("Hello ");   
    }
    else
    {
        printf("World\n");
    }
    return 0;
}

الحل 2 (فقط لـ Unix و Linux):

int main(int argc, char* argv[])
{   
    if( !fork() )
    {
        printf("Hello ");   
    }
    else
    {
        printf("World\n");
    }
    return 0;
}
 #include<stdio.h>
  int main()
{
 if(! printf("Hello"))
     printf ("Hello");
else
    printf ("World");
 return 0;
}

لأن Printf إرجاع عدد الأحرف وقد طبع بنجاح.

if(printf("Hello") == 1)
    printf("Hello")
else
    printf("World")
if (printf("Hello") < 1)
    printf("Hello");
else
    printf("World");

جريج كتب:

بغض النظر عن ما كنت تستخدم على حالة هذا مقتطف إما طباعة "مرحبا" أو "العالم" ، ولكن أبدا على حد سواء.

حسنا, هذا ليس صحيح, لكن لماذا تريد إلى طباعة كلا, لا أستطيع العثور على استخدام القضية.انها هزيمة الفائدة من وجود إذا كان البيان.أن "ريال مدريد" الحل هو أن لا تستخدم إذا كان في كل شيء.سخيفة أسئلة المقابلة...:)

مثيرة جدا للاهتمام شباب شكرا على الإجابات.لم أكن قد فكرت في وضع print داخل إذا شرط.

وهنا جافا ما يعادلها:

    if ( System.out.printf("Hello").equals("") )
        System.out.printf("Hello");
    else
        System.out.printf("World");

لا تستخدم إذا كان آخر كتلة ثم.

تحرير التعليق.

ذلك يعني أن القانون في كل من كتل ، أو قبل/بعد كتلة إذا كان المطلوب لتشغيل في كلتا الحالتين.

استخدام goto, واحد ناقصا الكلمات الرئيسية لدينا اليوم

Cheeting فارغ بيان آخر:

if (condition)
    // do if stuff
else;
    // do else stuff

إذا كنت لا تحب حقيقة أن آخر ؛ هو في الواقع فارغة بيان آخر جرب هذا:

for (int ii=0; ii<2; ii++)
{
    if (condition && !ii)
        // do if stuff
    else
    {
        // do else stuff
        break;
    }
}

اثنين من الحلول الممكنة دون استخدام printf البيانات :-

أولا :-

#include <stdio.h>

int
main(void)
{
  if (!stdin || (stdin = 0, main()))
    printf("hello");
  else
    printf("world");
  return 0;
}

الثاني

#include<stdio.h>
void main()
{
if (1
#define else if (1) 
)
{ 
  printf("hello"); 
} 
else
 { 
    printf("world"); 
}
}

المرجع :- Link1 , Link2

if (printf("hello") & 0)
{
printf("hello");
}
else
{
printf("world");

لا تحتاج إلى عناء حول عودة قيمة printf.

تعاطي تجهيزها مع تنظيف على الأقل.


#define else 
if(1)
{
   printf("hello");
}
else
{
   printf("world");
}
#undef else

الشرط على هذا السؤال هو:

 if(printf("hello")? 0 : 1) {   }
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top