কমা অপারেটর কখন কার্যকর?


88

আমি এই প্রশ্নটি "কমা অপারেটর" সম্পর্কে এক্সপ্রেশন ( ,) এবং এমডিএন ডক্স সম্পর্কে পড়েছি তবে এটি কোন পরিস্থিতিতে কার্যকর তা আমি ভাবতে পারি না।

সুতরাং, কমা অপারেটর কখন কার্যকর?


4
var i, j, k;বনাম var i; var j, var k?
সালমান এ

15
@ সালমানআ। আমি নিশ্চিত নই যে এটি ,অপারেটরের সাথে কিছু করার আছে । সেই লাইনটিও বৈধ C#, তবে ,অপারেটরটি সেখানে নেই।
gdoron মনিকা

4
@ সালমানআ। আমি করেছিলাম. এটি খুঁজে
পেল

4
@ সালমান এ ,সবসময় ,অপারেটর হয় না (এবং এটি ,সি # তে অপারেটর কখনও হয় না )। সুতরাং সি # এর সিনট্যাক্সের অংশ হিসাবে ,অবাধে ব্যবহার করার সময় সি # এর অপারেটরের অভাব থাকতে পারে ,
শেঠ কার্নেগি

8
আমি মনে করি যে এখানে উত্তরগুলি এই সংক্ষিপ্ত বিবরণটি সংক্ষিপ্ত করে রেখেছে যে ,বহুল ব্যবহৃত হয় না (এবং ক এর প্রতিটি ঘটনা ,কমা অপারেটর নয়) । তবে আপনি এটি এবং একটি অ্যারে অস্থায়ী ভেরিয়েবল তৈরি না করে ভেরিয়েবল অদলবদল ইনলাইন করতে ধার নিতে পারেন। আপনি যে মানগুলি পরিবর্তন করতে চান তা দেওয়া aএবং bআপনি করতে পারেন a = [b][b = a,0]। এটি bঅ্যারেতে বর্তমান রাখে । দ্বিতীয়টি []সম্পত্তি অ্যাক্সেস স্বরলিপি। সূচক অ্যাক্সেস করা হয় 0, কিন্তু বরাদ্দ আগে aথেকে b, যা এখন নিরাপদ, যেহেতু bঅ্যারের মধ্যে বজায় রাখা হয়। ,আমাদের মধ্যে একাধিক এক্সপ্রেশন করতে দেয় []

উত্তর:


128

নীচে আপনি নিজেরাই এটি লেখেন নি বলে সম্ভবত খুব কার্যকর নয় তবে একটি মিনিফায়ার কমা অপারেটর ব্যবহার করে কোড সঙ্কুচিত করতে পারে। উদাহরণ স্বরূপ:

if(x){foo();return bar()}else{return 1}

হবে:

return x?(foo(),bar()):1

? :অপারেটর, এখন ব্যবহার করা যেতে পারে যেহেতু কমা অপারেটর (একটি নির্দিষ্ট পরিমাণ) অনুমতি দেয় দুটি বিবৃতি এক বিবৃতি হিসেবে লেখা হবে।

এই হল (-> 24 এখানে বাইট 39) যা কিছু ঝরঝরে কম্প্রেশন জন্য করতে পারবেন দরকারী।


আমি যে কমার জোর করতে চাই var a, bহয় না কমা অপারেটর কারণ এটি একটি মধ্যে বিদ্যমান নয় অভিব্যক্তিvar বিবৃতিতে কমাটির একটি বিশেষ অর্থ রয়েছে ।a, bএকটি অভিব্যক্তি দুটি ভেরিয়েবল উল্লেখ করা হবে এবং মূল্যায়ন b, যা ক্ষেত্রে হয় না var a, b


4
আপনি কিভাবে এটি সম্পর্কে চিন্তা করে? আপনি এটি কোথা থেকে পড়েছেন? এটি কি সত্যই ব্যবহৃত হচ্ছে?
gdoron মনিকা

16
আমি অন্য দিন ক্লোজার কম্পাইলারের সাথে ঘোরাঘুরি করছিলাম এটি দেখতে আসলে কী ঘটেছিল , এবং আমি এই প্রতিস্থাপনটি লক্ষ্য করেছি।
pimvdb

4
আপনার কোডে দরকারী বলে একটি অনুরূপ ব্যবহার হ'ল বিবৃতি যদি কোনও ইনলাইনে একাধিক ভেরিয়েবল বরাদ্দ করে। উদাহরণস্বরূপ: if (condition) var1 = val1, var2 = val2;আমি ব্যক্তিগতভাবে মনে করি বন্ধনীগুলি এড়ানো সম্ভব যেখানে কোডটি আরও পাঠযোগ্য।
এইডিয়াখপি

4
আমি যখন কমা অপারেটরটি ব্যবহার করি তখন প্রায় আমি যখন অভিব্যক্তিগুলিতে লগ স্টেটমেন্ট যুক্ত করি (foo => (কনসোল.লগ ('foo', foo), foo))), বা যদি আমি হ্রাস পুনরাবৃত্তির সাথে খুব চালাক হয়ে উঠছি । (જોડીઓ.ড্রেস ((অভি, [কে, ভি])) => (এ্যাক [কে] = ভি, এ্যাক), {}))
জোসেফ সিকোরস্কি

38

কমা অপারেটর আপনাকে এমন একাধিক অভিব্যক্তি রাখার অনুমতি দেয় যেখানে একটি অভিব্যক্তি প্রত্যাশিত। একটি কমা দ্বারা পৃথক একাধিক এক্সপ্রেশন এর ফলে প্রাপ্ত মানটি সর্বশেষ কমা দ্বারা পৃথক হওয়া এক্সপ্রেশনটির মান হবে।

আমি ব্যক্তিগতভাবে এটি প্রায়শই ব্যবহার করি না কারণ এমন অনেকগুলি পরিস্থিতি নেই যেখানে একাধিক এক্সপ্রেশন আশা করা যায় এবং কমা অপারেটর ব্যবহারের চেয়ে কোডটি লেখার কম বিভ্রান্তিকর উপায় নেই। একটি আকর্ষণীয় সম্ভাবনা forলুপের শেষে যখন আপনি চান একাধিক ভেরিয়েবল বৃদ্ধি করা:

// j is initialized to some other value
// as the for loop executes both i and j are incremented
// because the comma operator allows two statements to be put in place of one
for (var i = 0; i < items.len; i++, j++) {
    // loop code here that operates on items[i] 
    // and sometimes uses j to access a different array
}

এখানে আপনি এটি দেখুন i++, j++ এমন এক জায়গায় স্থাপন করা যেতে পারে যেখানে একটি অভিব্যক্তি অনুমোদিত। এই বিশেষ ক্ষেত্রে, একাধিক অভিব্যক্তি পার্শ্ব প্রভাবের জন্য ব্যবহৃত হয় সুতরাং এটি যৌগিক এক্সপ্রেশনগুলি সর্বশেষটির মান গ্রহণ করে তা বিবেচ্য নয়, তবে এমন অন্যান্য ক্ষেত্রে রয়েছে যা বাস্তবে গুরুত্বপূর্ণ।


38

জাভাস্ক্রিপ্টে ফাংশনাল কোড লেখার সময় কমা অপারেটর প্রায়শই দরকারী।

এই কোডটি বিবেচনা করুন আমি কিছুক্ষণ আগে এসপিএর জন্য লিখেছিলাম যা নীচের মত কিছু ছিল

const actions = _.chain(options)
                 .pairs() // 1
                 .filter(selectActions) // 2
                 .map(createActionPromise) // 3
                 .reduce((state, pair) => (state[pair[0]] = pair[1], state), {}) // 4
                 .value();

এটি ছিল মোটামুটি জটিল, তবে বাস্তব-জগতের দৃশ্য। আমি কী ঘটছে তা বর্ণনা করার সময় আমার সাথে থাকুন এবং প্রক্রিয়াটিতে কমা অপারেটরের ক্ষেত্রে মামলা করুন।


এটি অ্যান্ডস্কোরের চেইন টু ব্যবহার করে

  1. ব্যবহার অপশন এই ফাংশন প্রেরণ করা সব পৃথক্ নিন pairs যা চালু হবে { a: 1, b: 2}মধ্যে[['a', 1], ['b', 2]]

  2. সম্পত্তি জোড়গুলির এই অ্যারেটি ফিল্টার করা হয় যার দ্বারা এটি সিস্টেমে 'ক্রিয়া' বলে গণ্য হয়।

  3. তারপরে অ্যারেতে দ্বিতীয় সূচকটি একটি ফাংশন দ্বারা প্রতিস্থাপন করা হবে যা সেই ক্রিয়াকে প্রতিনিধিত্ব করে প্রতিশ্রুতি দেয় (ব্যবহার করে map)

  4. পরিশেষে কলটি reduceপ্রতিটি "সম্পত্তি অ্যারে" ( ['a', 1]) কে একটি চূড়ান্ত অবজেক্টে ফিরিয়ে আনবে ।

শেষ ফলাফলটি optionsআর্গুমেন্টের রূপান্তরিত সংস্করণ , যাতে কেবল উপযুক্ত কী থাকে এবং যার মানগুলি কলিং ফাংশন দ্বারা ভোগ্য হয়।


শুধু তাকানো

.reduce((state, pair) => (state[pair[0]] = pair[1], state), {})

আপনি হ্রাস ফাংশনটি খালি রাষ্ট্রীয় অবজেক্টের সাথে শুরু দেখতে পাবেন stateএবং প্রতিটি জোড়ের জন্য কী এবং মান উপস্থাপন করা হয় তবে ফাংশনটি একই করে দেয়state জন্য, কী / মান জুটির সাথে সম্পর্কিত বস্তুটিতে কোনও সম্পত্তি যুক্ত করার পরে অবজেক্টটি প্রদান করে। ECMAScript 2015 এর তীর ফাংশন সিনট্যাক্সের কারণে, ফাংশন বডিটি একটি অভিব্যক্তি এবং ফলস্বরূপ, কমা অপারেটর একটি সংক্ষিপ্ত এবং দরকারী "পুনরাবৃত্তি" এর অনুমতি দেয় ফাংশনটিকে অনুমতি দেয়।

ECMAScript 2015 + তীর ফাংশন সহ আরও কার্যকরী শৈলীতে জাভাস্ক্রিপ্ট লেখার সময় ব্যক্তিগতভাবে আমি অসংখ্য মামলা জুড়ে এসেছি। এটি বলার পরেও, তীরের ক্রিয়াকলাপগুলির মুখোমুখি হওয়ার আগে (যেমন প্রশ্নের লেখার সময়), আমি কখনই কোনও ইচ্ছাকৃতভাবে কমা অপারেটরটি ব্যবহার করতাম না।


4
কোনও প্রোগ্রামার কখন / কখন কমা অপারেটর ব্যবহার করতে পারে সে সম্পর্কে এটিই একমাত্র কার্যকর উত্তর answer খুব দরকারী বিশেষতreduce
hgoebl

নিস উত্তর, কিন্তু যদি আমি কিছু সুপারিশ করতে পারি সামান্য আরো পাঠযোগ্য: .reduce((state, [key, value]) => (state[key] = value, state), {})। এবং আমি বুঝতে পারি যে এটি উত্তরের উদ্দেশ্যকে পরাস্ত করে তবে .reduce((state, [key, value]) => Object.assign(state, { [key]: value }), {})কমা অপারেটরের প্রয়োজন সম্পূর্ণরূপে মুছে ফেলবে।
প্যাট্রিক রবার্টস

যদিও আজকাল অবজেক্ট.সেসাইন সম্ভবত আরও বুদ্ধিমান বা এমনকি কেবল স্প্রেড অপারেটর, আমি নিশ্চিত নই যে তারা সে সময় ব্যাপকভাবে ব্যবহৃত হয়েছিল। আমি আরও উল্লেখ করতে চাই যে কমা অপারেটরটি যখন আরও কিছুটা অস্পষ্ট, তথ্যের সেট খুব বড় এমন পরিস্থিতিতে এটি অনেক কম আবর্জনা তৈরি করতে পারে। ধ্বংসাত্মক অবশ্যই পাঠযোগ্যতা যদিও সাহায্য করবে!
Syynth

18

কমা অপারেটরের জন্য আরেকটি ব্যবহার হ'ল ফলগুলি লুকানো যা আপনি রেপ বা কনসোলে মোটেই যত্নবান নন, নিখুঁত সুবিধার্থে।

উদাহরণস্বরূপ, আপনি যদি myVariable = aWholeLotOfTextRepl বা কনসোলে মূল্যায়ন করেন তবে এটি সবেমাত্র নির্ধারিত সমস্ত ডেটা মুদ্রণ করবে। এটি পৃষ্ঠাগুলি এবং পৃষ্ঠাগুলি হতে পারে এবং আপনি যদি এটি দেখতে না চান তবে আপনি তার পরিবর্তে মূল্যায়ন করতে পারবেন myVariable = aWholeLotOfText, 'done'এবং repl / কনসোলটি কেবল 'সম্পন্ন' মুদ্রণ করবে।

Oriel সঠিকভাবে তুলে ধরে যে কাস্টমাইজড toString()বা get()ফাংশন এমনকি এই দরকারী করা হতে পারে।


4
হা, খুব সুন্দর ধারণা! (অবশেষে এমন একটি উত্তর যা আসলে প্রায় সমস্ত উত্তরগুলির বিপরীতে প্রশ্নের উত্তর দেয় {এবং 3 টি মুছে ফেলা উত্তরগুলি যা দেখতে আপনার 20K খ্যাতি দরকার ...
জিডোরন মনিকাকে

4
যদি নির্ধারিত মানটি কোনও অবজেক্ট হয় তবে কনসোলটি সুন্দরভাবে এটি প্রদর্শনের চেষ্টা করতে পারে। এটি করতে উদাহরণস্বরূপ কল পাওয়া যাবে, যা বস্তুর অবস্থার পরিবর্তন করতে পারে। কমা ব্যবহার করে এটি প্রতিরোধ করতে পারে।
ওরিওল

@ ওরিওল - চমৎকার! আপনি সম্পূর্ণ সঠিক। এটি কোনওভাবেই সম্ভবত কার্যকর হওয়ায় কিছুটা হতাশাবোধ বোধ করে :)
জুলিয়ান ডি ভাল 5'16

13

কমা অপারেটর জাভাস্ক্রিপ্টের জন্য সুনির্দিষ্ট নয়, এটি সি এবং সি ++ এর মতো অন্যান্য ভাষায় উপলভ্য । বাইনারি অপারেটর হিসাবে এটি কার্যকর যখন প্রথম অপারেন্ড, যা সাধারণত একটি অভিব্যক্তি, দ্বিতীয় অপারেন্ডের জন্য প্রয়োজনীয় পার্শ্ব প্রতিক্রিয়া পছন্দ করে। উইকিপিডিয়া থেকে একটি উদাহরণ:

i = a += 2, a + b;

স্পষ্টতই আপনি দুটি ভিন্ন ভিন্ন লাইন কোড লিখতে পারেন, তবে কমা ব্যবহার করা অন্য বিকল্প এবং কখনও কখনও আরও পাঠযোগ্য।


4
এটিকে বিকল্প হিসাবে ভাবুন, যদিও ভালর সংজ্ঞাটি লোক থেকে আলাদা হতে পারে। তবে যেখানে আপনি কমা ব্যবহার করবেন তা আমি খুঁজে পাচ্ছি না। আর একটি অনুরূপ জিনিস তিনটি ?: অপারেটর। এটি সর্বদা যদি-তবে তবে কখনও কখনও প্রতিস্থাপন করা যেতে পারে?: - অন্যথায় এর চেয়ে বেশি পঠনযোগ্য কোড তৈরি করে। একই ধারণাটি কমাতেও যায়।
টাস্কিনুর

বিটিডাব্লু, আমি ভেরিয়েবল ডিক্লেয়ারেশনে কমা ব্যবহার বা লুপে একাধিক ভেরিয়েবল আরম্ভ করার কথা বিবেচনা করছি না। সেই ক্ষেত্রে কমা বেশিরভাগ ক্ষেত্রেই ভাল।
টাস্কিনূর

4
এটি বিভ্রান্তিকর মনে হচ্ছে ... ডাব্লুটিএফ।
টিমমার্জ

6

আমি ফ্লানাগানের সাথে একমত নই, এবং বলি যে কমাটি সত্যই কার্যকর এবং আরও পাঠযোগ্য এবং মার্জিত কোড লিখতে দেয়, বিশেষত যখন আপনি জানেন যে আপনি কী করছেন:

এখানে বিস্তৃত বিস্তারিত নিবন্ধকমা ব্যবহারের হয়েছে:

বিক্ষোভের প্রমাণের জন্য সেখান থেকে বেশ কয়েকটি উদাহরণ:

function renderCurve() {
  for(var a = 1, b = 10; a*b; a++, b--) {
    console.log(new Array(a*b).join('*'));
  }
}

একটি ফিবোনাচি জেনারেটর:

for (
    var i=2, r=[0,1];
    i<15;
    r.push(r[i-1] + r[i-2]), i++
); 
// 0,1,1,2,3,5,8,13,21,34,55,89,144,233,377

JQuery .parent()ফাংশনের অ্যানালগ, প্রথম প্যারেন্ট উপাদানটি সন্ধান করুন :

function firstAncestor(el, tagName) {
    while(el = el.parentNode, el && (el.tagName != tagName.toUpperCase()));
    return el;
}

//element in http://ecma262-5.com/ELS5_HTML.htm
var a = $('Section_15.1.1.2'); 

firstAncestor(a, 'div'); //<div class="page">

7
আমি নিশ্চিত নই যে আমি এর যে কোনওটি আরও পাঠযোগ্য কিনা তা বলব তবে এটি অবশ্যই +1+
ক্রিস মেরিসিক

4
শেষ উদাহরণে লুপটির সময় আপনার কমা দরকার নেই, while ((el = el.parentNode) && (el.tagName != tagName.toUpperCase()))সে প্রসঙ্গে ঠিকঠাক হয়ে উঠবেন।
পিটাজে

5

আমি এটির ব্যতীত এর ব্যবহারিক ব্যবহার খুঁজে পাইনি তবে এখানে এমন একটি দৃশ্যে দেখা গেছে যে জেমস প্যাডলসই আই ল সনাক্তকরণের জন্য কিছুক্ষণ লুপটিতে এই কৌশলটি সুন্দরভাবে ব্যবহার করেছেন :

var ie = (function(){

    var undef,
        v = 3,
        div = document.createElement('div'),
        all = div.getElementsByTagName('i');

    while ( // <-- notice no while body here
        div.innerHTML = '<!--[if gt IE ' + (++v) + ']><i></i><![endif]-->',
        all[0]
    );

    return v > 4 ? v : undef;

}());

এই দুটি লাইন কার্যকর করতে হবে:

div.innerHTML = '<!--[if gt IE ' + (++v) + ']><i></i><![endif]-->',
all[0]

এবং কমা অপারেটরের অভ্যন্তরে উভয়কেই মূল্যায়ন করা হয় যদিও কেউ তাদের আলাদাভাবে বিবৃতি দিতে পারে।


4
এটি একটি do- whileলুপ হতে পারে ।
কেসি চু

5

জাভা স্ক্রিপ্টে কমা অপারেটর ব্যবহার করে অপ্রত্যক্ষভাবে কোনও ফাংশন কল করার জন্য জাভাস্ক্রিপ্টে কিছু করা যায় "

এখানে একটি দীর্ঘ বিবরণ রয়েছে: জাভাস্ক্রিপ্টে পরোক্ষ ফাংশন কল

এই বাক্য গঠন ব্যবহার করে:

(function() {
    "use strict";
  
    var global = (function () { return this || (1,eval)("this"); })();
    console.log('Global === window should be true: ', global === window);
  
    var not_global = (function () { return this })();
    console.log('not_global === window should be false: ', not_global === window);
  
  }());

আপনি গ্লোবাল ভেরিয়েবলের অ্যাক্সেস পেতে পারেন কারণ evalসরাসরি বনামকে পরোক্ষভাবে ডাকা হলে আলাদাভাবে কাজ করে।


4

এই জাতীয় সাহায্যকারীদের লেখার সময় আমি কমা অপারেটরটিকে সবচেয়ে দরকারী বলে মনে করেছি।

const stopPropagation = event => (event.stopPropagation(), event);
const preventDefault = event => (event.preventDefault(), event);
const both = compose(stopPropagation, preventDefault);

আপনি কোনও একটি দিয়ে কমা প্রতিস্থাপন করতে পারেন || এবং&&, তবে তার পরে আপনাকে ফাংশনটি কী দেয় তা জানতে হবে।

তার চেয়েও গুরুত্বপূর্ণ, কমা বিভাজক অভিপ্রায়টি যোগাযোগ করে - বাম-অপারেন্ড কী মূল্যায়ন করে তা কোডের যত্ন নেয় না , অন্যদিকে বিকল্পগুলি সেখানে থাকার কারণ হতে পারে। এর ফলে এটি বোঝা এবং চুল্লিটিকে আরও সহজ করে তোলে। যদি ফাংশন রিটার্নের ধরনটি কখনও পরিবর্তন হয় তবে উপরের কোডটি প্রভাবিত হবে না।

স্বাভাবিকভাবেই আপনি একই জিনিসটি অন্যান্য উপায়ে অর্জন করতে পারেন তবে সংক্ষিপ্তভাবে নয়। যদি || এবং && সাধারণ ব্যবহারে একটি জায়গা খুঁজে পেয়েছিল, তাই কমা অপারেটরটিও করতে পারে।


tap( Ramdajs.com/docs/#tap ) রমদা- লোদাশ কী করে তার মতো । মূলত, আপনি একটি পার্শ্ব-প্রভাব কার্যকর করছেন এবং তারপরে প্রাথমিক মানটি ফিরিয়ে দিচ্ছেন; ফাংশনাল প্রোগ্রামিংয়ে খুব দরকারী :)
হিমসাগর 1

1

এটি ব্যবহার করে শেষ হওয়া একটি সাধারণ কেস হ'ল argumentচ্ছিক যুক্তি পার্সিংয়ের সময়। আমি মনে করি এটি এটিকে আরও পঠনযোগ্য এবং আরও সংক্ষিপ্ত করে তোলে যাতে যুক্তিটি পার্সিংটি ফাংশন বডিটিতে প্রভাব ফেলতে পারে না।

/**
 * @param {string} [str]
 * @param {object} [obj]
 * @param {Date} [date]
 */
function f(str, obj, date) {
  // handle optional arguments
  if (typeof str !== "string") date = obj, obj = str, str = "default";
  if (obj instanceof Date) date = obj, obj = {};
  if (!(date instanceof Date)) date = new Date();

  // ...
}

যদিও আমি এটি নিজের পক্ষে নিচ্ছি না, তবে কারও দেওয়া এটিই একমাত্র উদাহরণ যা আমি মনে করি যে কোনও ব্যক্তি বলতে পারেন যে তারা সম্পূর্ণ উন্মাদ বলে আমাকে না ভেবে স্বতন্ত্র প্রকাশের বিবৃতিগুলির সমমানের তালিকার চেয়ে পঠনযোগ্যতার পক্ষে ভাল is
সেমিকোলন

1

ধরা যাক আপনার একটি অ্যারে রয়েছে:

arr = [];

যখন আপনি pushএই অ্যারেটিতে যান, আপনি খুব কমই pushরিটার্ন ভ্যালুতে, অর্থাৎ অ্যারের নতুন দৈর্ঘ্যে, তবে অ্যারে নিজেই আগ্রহী:

arr.push('foo')  // ['foo'] seems more interesting than 1

কমা অপারেটরটি ব্যবহার করে, আমরা অ্যারেতে চাপ দিতে পারি, অ্যারেটি কমাতে শেষ অপারেন্ড হিসাবে নির্দিষ্ট করতে পারি এবং তারপরে ফলাফলটি - অ্যারে নিজেই ব্যবহার করতে পারি - পরবর্তী অ্যারে পদ্ধতি কলের জন্য, এক ধরণের শৃঙ্খলাবদ্ধ:

(arr.push('bar'), arr.push('baz'), arr).sort(); // [ 'bar', 'baz', 'foo' ]

-2

আর একটি ক্ষেত্র যেখানে কমা অপারেটর ব্যবহার করা যেতে পারে তা হ'ল কোড অবফেসেশন

ধরা যাক কোনও বিকাশকারী এই জাতীয় কিছু কোড লিখেছেন:

var foo = 'bar';

এখন, তিনি কোডটি অবলম্বন করার সিদ্ধান্ত নেন। ব্যবহৃত সরঞ্জামটি কোডটি এভাবে পরিবর্তন করতে পারে:

var Z0b=(45,87)>(195,3)?'bar':(54,65)>(1,0)?'':'baz';// Z0b == 'bar'

ডেমো: http://jsfiddle.net/uvDuE/


4
@gdoron দয়া করে এই উত্তর কটাক্ষপাত আছে stackoverflow.com/a/17903036/363573 সি কমা অপারেটর ++, সম্পর্কে। আপত্তি সম্পর্কে আপনি জেমস কানজের মন্তব্য লক্ষ্য করবেন।
স্টিফান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.