#include<stdio.h>

  main()

  {

           int a=10;
           printf("%d %d %d",a,a=a+5,a);


  }

এই program এর output 15 15 15 হলো কিভাবে????

asked 05 Feb '15, 17:59

john's gravatar image

john
7310

edited 05 Feb '15, 18:15

__salman__'s gravatar image

__salman__ ♦♦
1.1k211

কেন? কত হওয়া উচিত ছিল?

(05 Feb '15, 19:19) Tamim Shahriar Subeen ♦♦

আমার মতে first %d এর মান হবে 10.আর পরের ২ টা হবে 15.

(06 Feb '15, 15:58) john
1

না, নিচে @tfq07 এর দেওয়া ব্যাখ্যা ঠিক আছে। মানে প্রথমে সব এসাইনমেন্ট অপারেশনের কাজ হয়ে যাবে। তারপরে একটা একটা করে প্রিন্ট হবে।

(08 Feb '15, 16:23) Tamim Shahriar Subeen ♦♦

এখন বুঝতে পারছি। ধন্যবাদ।

(09 Feb '15, 06:41) john

ধন্যবাদ সকলকে।নতুন কিছু জানতে পারলাম।

(09 Feb '15, 06:42) Kaiser Ahmed

সি প্রোগ্রাম লাইন অনুসারে কাজ করে। যেমন: সেমিকোলন (;) দ্বারা একটি লাইন এর শেষ বোঝায়। সেক্ষেত্রে আপনার কাম্য কোডটিও একটি লাইন এবং এটি লাইনের প্রত্যেকটি অংশের পিসিডেন্স (অগ্রগন্যতা) অনুসারে কাজ করে । আপনার কোডে , অ্যাসাইনমেন্ট তথা a=a+5 এর অগ্রগন্যতা সবার আগে তাই প্রথমে এই কাজটি সম্পাদান করে পরে সে সর্বত্র এই মানটিই প্রিন্ট করে।

permanent link

answered 06 Feb '15, 17:13

tfq07's gravatar image

tfq07
513

ধন্যবাদ।কিন্তু আমি এখনও জিনিসটা ভালভাবে বুঝতে পারতেছি না।

  #include<stdio.h>

  main()

  {
    int a=10;

    int b;

    printf("%d %d %d %d %d",a,a=a+5,b=a,a=a-2,a);

  }

এই program এ যদি precedence হিসাব করি তাহলে +,- এর precedence সমান।আর এর associativity হল ডান-বাম।তাহলে এর output তো 10 8 8 13 13 হওয়ার কথা।কিন্তু output 13 13 8 13 13 হয় কেন? kindly একটু explain করলে উপকৃত হব.........ধন্যবাদ।

(07 Feb '15, 04:26) john

প্রশ্ন সংক্রান্ত কোড/ইমেজ -এগুলো প্রশ্ন এডিট করে প্রশ্নের সাথে একসাথে রাখাই ভালো। এতে করে প্রশ্নটা পড়লে বাকিদের সমস্যাটা বুঝতে সুবিধা হয়। কমেন্ট সেকশনে দেয়া যেতে পারে যে, "আমি প্রশ্নটি এডিট করেছি, চেক করুন"- এই ধরনের কথা। আর প্রশ্নের টাইটেল এমন হতে হবে যেন টাইটেল পড়েই প্রশ্ন সম্পর্কে ধারনা পাওয়া যায়। "প্রোগ্রামিং প্রবলেম" - এই কথা থেকে আসলে প্রব্লেমটি কোন জায়গায় বুঝা যায় না।

(07 Feb '15, 05:29) __salman__ ♦♦

আপনি একই লাইনে তিনটি এসাইনমেন্ট দিয়েছেন। একটি ‍a=a+5, আরেকটি b=a এবং শেষটি a=a-2 ডান থেকে বামে তার প্রথম কাজটি হল a=a-2 অর্থাৎ ‍a=a-2=10-2=8 a এর বর্তমান মান এখন 8 পরের টি হল b=a=8 অর্থাৎ বর্তমানে a এর মান 8 এবং b এর মান 8 সর্বশেষ a=a+5=8+5=13 অর্থাৎ বর্তমানে a এর মান 13 এবং b এর মান 8 এর পর শুরু প্রিন্ট এর কাজ প্রথমে ‍ ‍a, তারপর a তারপর b তারপরে আবার a সর্বশেষে আবার a একারণেই output 13 13 8 13 13 আপনি এসাইন্টমেন্ট গুলোর অবস্থান পরিবর্তন করেলেই ব্যাপারটা ভালোভাবে বুঝতে পারবেন।

(08 Feb '15, 15:50) tfq07

হ্যা.....এখন বিষয় টা মোটামুটি স্পষ্ট হইছে। অনেক অনেক ধন্যবাদ tfq07 ভাই।

(09 Feb '15, 06:39) john

int a=4,b=1; printf("%d-%d-%d\n",b=a-2,a=3,a+b); a=4,b=1; printf("%d-%d-%d\n",a+b,b=a-2,a=3); এই খানে ঠিক বোঝা গেল না। এই দুইটার ক্ষেত্তে আলাদা আলাদা উত্তর কেনো হয়? কেও সাহায্য করলে ভাল হত।

(11 Feb '15, 16:36) Sanchari
-2

আপনি হয়তো এটা লিখতে চেয়েছেন

#include <stdio.h>

      main()

      {
          int a=10;
          printf("%d, %d=%d+5 ",a,a+5,a);

      }
permanent link

answered 05 Feb '15, 19:35

Root%20Kit's gravatar image

Root Kit
295

না ভাইয়া আমি এটা লিখতে চাই নাই। যা লিখছি ওটাই ঠিক আসে । ধন্যবাদ.........।

(06 Feb '15, 16:00) john
Your answer
toggle preview

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Markdown Basics

  • *italic* or _italic_
  • **bold** or __bold__
  • link:[text](http://url.com/ "title")
  • image?![alt text](/path/img.jpg "title")
  • numbered list: 1. Foo 2. Bar
  • to add a line break simply add two spaces to where you would like the new line to be.
  • basic HTML tags are also supported

Question tags:

×63
×3

question asked: 05 Feb '15, 17:59

question was seen: 1,212 times

last updated: 11 Feb '15, 16:36